Php 将mysqli_real_escape_字符串与其他清理功能一起使用
我的表单输入清理功能:Php 将mysqli_real_escape_字符串与其他清理功能一起使用,php,mysql,security,sql-injection,sanitization,Php,Mysql,Security,Sql Injection,Sanitization,我的表单输入清理功能: function clean_input($data) { $data = trim($data); $data = strip_tags($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data;
function clean_input($data)
{
$data = trim($data);
$data = strip_tags($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
我的SQL行:
$q = "SELECT * FROM users WHERE username = {mysqli_real_escape_string ('$username')} AND password = {mysqli_real_escape_string('$password')}";
$r = mysqli_query($dbc, $q);
这是正确的用法吗
这是正确的用法吗
不,不是。如果您在输入周围使用单引号,如果您不使用单引号,那么这将是相当安全的,但这并不是安全性或可用性/数据完整性的推荐方法
防止SQL注入
使用事先准备好的陈述。对于PHP,您可以使用or(另请注意,这可能是一个问题,具体取决于您的版本/配置)
下面是我们要说的:
第二种技术是在将用户输入放入
查询然而,这种方法[mysqli\u real\u escape\u string]与使用
参数化查询,我们不能保证它会阻止所有SQL查询
在所有情况下注射。此技术应仅在以下情况下使用:
注意,以经济高效的方式改装旧代码
clean_输入函数
让我们看看这些函数中的每一个:
- trim:删除字符串开头和结尾的空白。这在某些情况下可能有用,但在太多情况下不会造成伤害。这实际上并不影响安全性
- 带标签:删除。这可能是抵御某些攻击(一些代码注入、一些XSS、一些LFI/RFI)的第一道防线,但它可能会损坏您的数据(例如
较小的符号)( 这是正确的用法吗 不,它不是。如果你在输入周围使用单引号,如果你不使用单引号,这将是相当安全的,但这确实不是安全性或可用性/数据完整性的推荐方法 防止SQL注入 使用准备好的语句。对于PHP,您可以使用or(另请注意,这可能是一个问题,取决于您的版本/配置) 下面是我们要说的: 第二种技术是在将用户输入放入 然而,这种方法[mysqli\u real\u escape\u string]与使用 参数化查询,我们不能保证它会阻止所有SQL查询 在所有情况下都应使用注射。此技术仅适用于 注意,以经济高效的方式改装旧代码 clean_输入函数 让我们看看这些函数中的每一个:
- trim:删除字符串开头和结尾的空格。这在某些情况下可能有用,在太多情况下不会有任何影响。它不会真正影响安全性
- strip_tags:删除。这是抵御某些攻击(一些代码注入、一些XSS、一些LFI/RFI)的第一道防线,但它会损坏数据(例如
较小的符号)(感谢你的广泛回应和见解。我从你的评论中学到了很多,并有了新的学习方向。感谢你的广泛回应和见解。我从你的评论中学到了很多,并有了新的学习方向。