PHP中防止SQL注入

Posted 我的开发之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中防止SQL注入相关的知识,希望对你有一定的参考价值。

防止SQL注入,我们需要注意以下几个要点:

  • 1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
  • 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
  • 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
  • 4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
  • 5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装

到底我们能做什么去防止sql注入呢?

1、通过使用预编译语句(prepared statements)

使用PDO对象(对于任何数据库驱动都好用)

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

$stmt->execute(array(‘name‘ => $name));

foreach ($stmt as $row) {

  // do something with $row

}

2、参数化查询(parameterized queries)

使用mysqli

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

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

$stmt->execute();

以上是关于PHP中防止SQL注入的主要内容,如果未能解决你的问题,请参考以下文章

php如何防止sql注入?

php中防止SQL注入的方法

php如何防止sql注入

php如何防止sql注入

留言板防灌水功能应该怎么做?怎么防止sql注入?用PHP编写

PHP:测试SQL注入以及防止SQL注入