在php类似的web开发应用程序中,SQL的注入问题,总是围绕着安全问题,挥之不去,那么如何真正做好你的SQL过滤呢.PHP官方推荐的PDO即可以轻松搞定关于SQL注入的问题,也可以提升SQL执行效率,一举两得的事情为什么不去做呢?所以今天为大家说说关于PHP的防止SQL注入问题的思考,不废话了下面代码实例.
普通防止sql注入方式, 下面以登录为列
第一步: 先链接数据库
try{
$user = 'xxx'; // 用户名
$pwd = 'xxx';// 密码
$dbname = "xxx"; // 数据库
$pdo = new PDO("mysql:dbname=$dbname",$user, $pwd);
}catch(PDOException $e){
echo $e->getMessage();
}
// 防止sql注入第一种方式
// 下面接收从表单提交过来的用户名和密码
// $username = $_POST['username']; // 这样会造成sql注入漏洞
$username = addslashes($_POST['username']); // 使用addslashes()这个函数滤非法字符,防止sql注入.
$password = $_POST['password'];
$sql = "SELECT * FROM user WHERE username=$username AND pwd = '{$pwd}'";
$stmt = $pdo->query($sql);
echo $stmt->rowCount(); // 返回受影响的行数
// 第二:使用PDO::quote()方法防止sql注入,过滤非法字符
$username = $pdo->quote($_POST['username'], PDO::PARAM::STR); //quote()方法有两个参数, 第一个参数为要过滤的字段, 第二个为指定当前字段类型, 默认为字符型