PHP 随笔4 防注入

SQL注入:

      所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

例1:已知用户名 admin,在表单中填入 admin‘ or ‘ 1 就可以不写密码直接登录

      SELECT * FROM user WHERE name = ‘admin’ or ‘1’ AND password = $pwd;

 

只要用户的验证码和用户名正确就可以进入页

三个函数:

addslashes($string):用反斜线引用字符串中的特殊字符' " \

$username=addslashes($username);

 

mysql_escape_string($string):用反斜杠转义字符串中的特殊字符,用于mysql_query()查询。

$username=mysql_escape_string($username);

 

mysql_real_escape_string($string):转义SQL语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集,需要保证当前是连接状态才能用该函数,否则会报警告。 不转义%与_

$username=mysql_real_escape_string($username);

 https://www.w3school.com.cn/php/func_mysql_real_escape_string.asp

两种选择:

使用PDO

$stmt = $pdo->prepare('SELECT * FROM user WHERE name = :name');

$stmt->execute(array(':name' => $name));

foreach ($stmt as $row) {

// do something with $row

}

 

使用mysqli

$stmt = $dbConnection->prepare('SELECT * FROM user WHERE name = ?');

$stmt->bind_param('s', $name);

$stmt->execute();

$result = $stmt->get_result();

posted @ 2018-01-20 08:23  期待明天**  阅读(85)  评论(0)    收藏  举报