关于PDO防sql注入问题

在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()方法有两个参数, 第一个参数为要过滤的字段, 第二个为指定当前字段类型, 默认为字符型

阅读更多
上一篇PHP-PDO对象使用常用方法
下一篇预处理语句占位符的使用
想对作者说点什么? 我来说一句

SQL注入脚本防SQL注入脚本

2010年11月26日 9KB 下载

没有更多推荐了,返回首页

关闭
关闭