我已经阅读了很多文件来防止sql注入。
他们说使用PDO
和mysql_real_escape_string
。
我编写BBS代码(旧式...), 和人们使用我的BBS代码, 做一些简单的代码,如:
select * from $g4[member_table] where mb_id='$mb_id' and mb_1='$my_option'
$mb_id
执行mysql_real_escape_string
但$my_option
可能不会。
所以我想使用像clean_sql()这样的php函数清理所有$_GET
,$_POST
,$_REQUEST
varibales。
clean_sql()清除所有sql语句 当$ my_option值为“1”时,联合选择*来自g4_member,其中mb_id ='admin'“
请让我知道像clean_sql()这样的函数吗?
=== cleal_sql必须与php 4.x一起使用。
答案 0 :(得分:3)
无论是否使用UNION,SQL注入的最佳实践都是相同的。 $_POST
,$_GET
,$_REQUEST
或任何其他形式的用户提供的数据也是如此。使用预准备语句(通过PDO或MySQLi)或mysqli_real_escape_string()
。
当然,您应该更进一步,在尝试将数据保存到数据库之前验证并清理用户提供的数据。 filter_var()
和ctype_*
等功能是验证和/或清理数据的简便方法。