我有这样一行:SQL注入:这行是否安全?
$sql = "UPDATE votes SET up=up+1 WHERE id='{$p}'";
现在从我读过的SQL注入的一种方式是通过不“收”的SQL查询正确,它允许黑客添加额外的信息造成的。
所以我的问题是,这条线对我来说是安全的up=up+1
还没有“封闭”,但如果我把它设置为这样up='up+1'
这让我“关闭”它不起作用。
排队类型是int(11)
如果这有什么区别。
更新:
$p
被消毒与函数
function sanitize($foo) {
if(get_magic_quotes_gpc() == true) {
$foo = stripslashes($foo);
}
return mysql_real_escape_string(htmlspecialchars($foo));
}
这个声明对我来说看起来很安全,除非你只需要确保$ p在这个声明之前总是数字。 –
千万不要消毒。逃逸。消毒取决于你是否知道每一种可能的攻击途径和专门针对它的过滤。任何时候发现新的攻击途径,你的功能都是没用的。转义处理所有攻击。 –
如果您担心SQL注入攻击,那么您应该通过存储过程和视图来限制数据库访问。也就是说,特定的查询看起来非常安全,特别是因为$ p被函数检查。 –