是否有自动SQL注入防护PHP库。类似的,检查传入的参数,如GET,POST,并检查可能的SQL攻击签名,然后再继续执行网站代码。
例如: http://www.example.com/index.php?page_id=')/的 /联合/ / ALL /的 /选择/ / NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL - / ** / uHkS
在上面的URL中,我在GET参数中传递了sql语法,PHP库将在项目代码开始执行之前检查GET,POST参数,如果有任何SQL攻击,则会立即存在请求。抛出异常消息。
答案 0 :(得分:0)
正如其他评论中所写:没有库可以通过请求自动检测对数据库的攻击。</ p>
如果有数据传入可能会对数据库操作造成威胁,立即取消请求将是非常糟糕的。
只需使用带有输入名称的普通表格即可。他的名字叫Brian O'Connor ......好吧,他似乎无法使用你的程序。
如果用户想搞乱你的数据库,那么库需要进行语义检查才能看到。要进行此语义检查,库还需要知道实际预期的数据类型。在上面提到的例子中,当你想要一个名字时,你可能会确定“丢弃表”不是想要的输入,但是定义每个输入所需的规则会有很多开销。
如果你总是正确对待userdata(通过使用预处理语句或database-api的转义/引用函数),你的表中会有一些奇怪的数据(如果有人真的试图给你注入sql)但是我猜不会伤害你。
答案 1 :(得分:-2)
您可以使用PDO
或Prepared Statements
在数据库端执行某些操作,也可以在服务器端脚本中清除POST
或GET
数据。结束。
$safe_data=filter_input(INPUT_GET, 'comment', FILTER_SANITIZE_SPECIAL_CHARS);
因为此函数一次只能处理一个GET
参数,所以您可能希望编写一个函数来创建一个新的数组(例如$SAFE_GET
),它遍历GET
参数并一次性消毒它们。
或者,您可以在php.ini
文件中设置一个指令,默认为清除HTML安全的所有输入:
filter.default="special_chars"
我不认为有PHP库可以清理它;你必须小心处理数据。
对于POST
和GET
,请清理用户输入。使用所有类型的Fuzz Testing
并执行Q&amp; A,您的申请应该是安全的。