我听说 sprintf()
可以防止 SQL 注入(inject)。是真的吗?如果是,怎么办?
为什么人们推荐这样写查询:
$sql = sprintf('SELECT * FROM TABLE WHERE COL1 = %s AND COL2 = %s',$col1,$col2);
最佳答案
sprintf 不会保护你!它只替换 %s
你必须 mysql_real_escape_string 这样:
$sql = sprintf('SELECT * FROM TABLE WHERE COL1 = "%s" AND COL2 = "%s"',
mysql_real_escape_string($col1),
mysql_real_escape_string($col2));
注入(inject)更安全
注意:我建议你看看PDO ,这是我喜欢用于 DBconections 和查询的内容
关于php - sprintf() 如何防止 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646731/