在线工具 在线编程 在线白板 在线工具 在线编程 在线白板

PHP 开发中有效防御 SQL 注入攻击有哪些好方法

大哥们,请问一下,PHP 开发中有效防御 SQL 注入攻击有哪些好方法
最新回答
她ゝ那么高傲

2024-11-28 15:27:19

使用PDO或者MySQLi,有很多封装好的方便的Class。
例如使用PHP-PDO-MySQL-Class · GitHub(这个Class使用上比较类似Python的MySQLdb)的话,这样就是安全的:
<?php
$DB->query("SELECT * FROM fruit WHERE name IN (?)",array($_GET['pm1'],$_GET['pm2']));
$DB->query("SELECT * FROM users WHERE name=? and password=?",array($_GET['name'],$_GET['pw']));
?>

直接拼接字符串则是危险的:
<?php
$DB->query("SELECT * FROM fruit WHERE name IN ('".$_GET['pm1']."','".$_GET['pm2']."')");
$DB->query("SELECT * FROM users WHERE name='".$_GET['name']."' and password='".$_GET['pw']."'");
?>

PDO参数绑定的原理是将命令与参数分两次发送到MySQL,MySQL就能识别参数与命令,从而避免SQL注入(在参数上构造命令)。
mysql在新版本PHP中已经预废弃,使用的话会抛出错误,现在建议使用MySQLi或者MySQL_PDO。