PHP SQL注入的防范

发表于:2014-5-28 11:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:天机无双    来源:51Testing软件测试网采编

分享:
  b. 强制字符格式(类型)
  在很多时候我们要用到类似xxx.php?id=xxx这样的URL,一般来说$id都是整型变量,为了防范攻击者把$id篡改成攻击语句,我们要尽量强制变量,代码如下:
  PHP防范SQL注入的代码
  $id=intval($_GET[‘id’]);
  当然,还有其他的变量类型,如果有必要的话尽量强制一下格式。
  c. SQL语句中包含变量加引号
  这一点儿很简单,但也容易养成习惯,先来看看这两条SQL语句:
  SQL代码
  SELECT * FROM article WHERE articleid='$id'
  SELECT * FROM article WHERE articleid=$id
  两种写法在各种程序中都很普遍,但安全性是不同的,第一句由于把变量$id放在一对单引号中,这样使得我们所提交的变量都变成了字符串,即使包含了 正确的SQL语句,也不会正常执行,而第二句不同,由于没有把变量放进单引号中,那我们所提交的一切,只要包含空格,那空格后的变量都会作为SQL语句执 行,因此,我们要养成给SQL语句中变量加引号的习惯。
  d.URL伪静态化
  URL伪静态化也就是URL重写技术,像Discuz!一样,将所有的URL都rewrite成类似xxx-xxx-x.html格式,既有利于SEO,又达到了一定的安全性,也不失为一个好办法。但要想实现PHP防范SQL注入,前提是你得有一定的“正则”基础。
22/2<12
春暖花开更文季,点击参与还有惊喜礼品~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号