[PHP] SQL Injection 防范

SQL Injection是多年来常常遇到的问题,
很多骇客入门都是从这边入手的.

可从前端使用者传入的字符串或者参数传入, 导致程序执行跳脱符导致坏掉.
甚至可以测试出程序中的其他table资讯.
甚至shutdown 数据库主机就不妙了.


以这个例子为例,


  
  

数据库会把执行的动作拆成两句
[SELECT * FROM actors WHERE last_name = 'O']
[Reilly']
后面 [Reilly'] 这句就会造成异常.
若骇客把 [O'Really] 字符串改成  [O' SELECT * FROM actors WHERE ''=']
执行完就会变成
[SELECT * FROM actors WHERE last_name = 'O']
[SELECT * FROM actors WHERE ''='']

就可以把 table action 里面的数据全部套出来.
作法其实相当简单.


这边附上官网的解法.
http://php.net/manual/en/function.mysql-real-escape-string.php
满简单的, 就是一个function  mysql_real_escape_string()
PHP版本大于4.3即可使用.


  
  

更新:

bind_param()
addslashes()
mysql_escape_string()

这个些方法也可以啰,
有兴趣的朋友可以自行参考下.
有时间我再发文补充.

原文:大专栏  [PHP] SQL Injection 防范


猜你喜欢

转载自www.cnblogs.com/petewell/p/11452671.html