English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 业界动态 >> PHP网站SQL注入防御问题

 

PHP网站SQL注入防御问题

威盾防火墙 2015-01-08

 
自己维护的一个网站在做安全检测时总是被评出多个SQL注入方面的安全漏洞,测评结果显示网站中存在大量的SQL注入漏洞。请问各位高手我该如何补救?

PHP+Apache+MySql+Windows

抄书抄网络的就别回答了,我想知道具体的我该如何做,怎么去解决这个问题。我希望我的网站在做测评的时候没有关于“SQL安全漏洞”问题。

请看下面的图片,问题就出现在那些id上。问了好多人都告诉我说应该加id校验或者强制类型转换。但我不知道怎么写代码怎么校验id或者是强制类型转换。

 

2012-04-17 11:04网友采纳
把你的sql语句找出来,然后找到select id from table where a='*';这样的语句;
这样的语句就是有注入可能的地方,有二种解决方案:
1、写存储过程,所有条件以参数形式传递,这个可以有效的防范注入;
2、sprintf("select id from table where a=%s",a);这个也行,就是将注入条件都当成字符处理来防范注入攻击。
追问
例如下面是我检测网站出现的关于存在SQL注入的一些提示,请帮忙看一下该修改哪个页面,怎样修改。
回答
我不知道你的url重写规则;
profsearcher/researchlist/sysc_id/
问题是这个地方出了问题。
你检查一下sysc_id是那个模块中使用的,
建议你对这个id进行校验,
同时不要将数据库的真实参数暴露出来;
可以做一些处理,可以参考淘宝。
追问
没错,现在就是这个id暴漏出来了,我想问一下如何将这个id做强制类型转换。刚才我问了一下给网站做扫描的人,他说是因为这些id会被人利用,从而把数据库拖下来。解决办法很多,说可以将id做一个强制类型转换,或者将id做一下隐藏。你刚才说的淘宝那种是非常好的,可是我不知道怎么做,请教。
回答
你可以自己写个加解密,如id,
你可以换进制或位计算再放出来,
读的时候解回去再去查。
给个思路,如id=19,你可以在id前面加上1然后转为16进制;
然后取的时候你转回10进制再去掉前面你加的1,再用这个id去查。

相关内容: 最新内容:
SQL注入与ASP木马上传[2015-01-08]
sql注入防御[2015-01-08]
SQL注入攻击的原理及其防范措施[2015-01-08]
SQL注入中绕过'(单引号)限制继续注入[2015-01-07]
SQL注入中可以替换空格的字符[2015-01-07]
Web环境下SQL注入攻击的检测与防御[2015-01-07]
SQL注入与ASP木马上传[2015-01-08]
sql注入防御[2015-01-08]
SQL注入攻击的原理及其防范措施[2015-01-08]
路由器漏洞:黑客展示如何攻陷百万台[2015-01-08]
揭秘黑客手中DDoS攻击利器——黑色能量2代[2015-01-08]
深度分析TCP会话劫持[2015-01-08]