我是否必须对每个查询使用mysql_real_escape_string
,或者只是在页面上有用户输入时使用?{/ p>
我们说我有:
$check = mysql_query ("SELECT * FROM users WHERE user='$user' AND pm='$on'");
$numrows_check = mysql_num_rows($check);
if ($numrows_check == 1) {
如果页面没有用户输入,我是否需要担心SQL注入?
P.S。
我知道pdo
和mysqli
,我专门询问mysql
。感谢。
答案 0 :(得分:1)
SQL注入可以使用表单注入,也可以使用链接。这意味着每当有用户输入时你就必须 mysq_real_escape_string()
注射如何使用链接注入。示例如下。
http:///www.mysite.com?delete.php?id=5
如果显示这样的URL,并且某些人可以更改此" 5"达到他/她期望的价值。所以有几种方法可以避免这种类型的注入,一个简单的解决方案是你可以使用 intval()。
因此有必要对每个易受攻击的点使用所有约定。所以你可以安全注塑。所以 预防胜于治疗。