有效防止SQL注入漏洞详细说明_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了有效防止SQL注入漏洞详细说明_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2661字,纯文字阅读大概需要4分钟。
内容图文
![有效防止SQL注入漏洞详细说明_PHP教程](/upload/InfoBanner/zyjiaocheng/179/e2bc25a07aa44687b09d7e80f5ae0dfd.jpg)
a.将'(单引号)替换成''(两个单引号)
b.将--(注释符)替换掉
c.将参数加入语句时,一定要在前后各加上引号,如:'select * from table where id='''+@id+''''这样的加法
2.如果动态构造的sql语句中包含表参数,请勿必给表加上[](中括号),如:'select * from ['+@tab+']'这样的做法
3..避免动态sql语句:尤其是从ie客户端获取查询、修改、删除条件的字段最容易被注入,例如上述从客户端获取personid,为了开发方便,直接把从客户端获取的persongid作为sql语句的条件,却没有对personid作必要的检查,所以在开发时执行sql语句时最好使用preparedstatement类。
4. 验证数据:在客户端ie使用网页特效验证用户输入数据的合法性作用其实不是很大,一定要在获取客户端数据之后,对数据进行严格的验证,开发人员不要假想用户只会输入合法的数据。确保在应用程序中检查分号、引号、括号、sql关键字等。可以使用正则表达式来进行复杂的模式匹配,运用它可以达到良好的效果。
×××网站地址薄查看程序需要传递一个personid,personid可以通过url参数传递,由于地址本查看程序直接获取personid,没有做任何数据合法性验证,而且personid是字符串变量,获取personid的代码如下:
if (getparameter(req,"personid")!=null){
personid=getparameter(req,"personid").trim();
}else{
personid="";
}
该程序中组合成的动态sql语句如下:
personsql="select * from 表名 where userid="+long.tostring(userid)+" and addrcontactid="+personid;
由于程序没有检查personid是否是整数,所以攻击者随便给personid赋一个值,即可继续运行后续的程序逻辑,如果攻击者输入如下网址:
http://www.----------------------?personid=6414 or 2=2
组合成的sql语句如下:
select * from 表名where userid=1433620 and addrcontactid=6414 or 2=2
防范方法
sql注入漏洞可谓是“千里之堤,溃于蚁穴”,这种漏洞在网上极为普遍,通常是由于程序员对注入不了解,或者程序过滤不严格,或者某个参数忘记检查导致。在这里,我给大家一个函数,代替asp教程中的request函数,可以对一切的sql注入say no,函数如下:
function saferequest(paraname,paratype)
'--- 传入参数 ---
'paraname:参数名称-字符型
'paratype:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)dim paravalue
paravalue=request(paraname)
if paratype=1 then
if not isnumeric(paravalue) then
response.write "参数" & paraname & "必须为数字型!"
response.end
end if
else
paravalue=replace(paravalue,"'","''")
end if
saferequest=paravalue
end function
上面函数应用
对于int型的参数,如文章的id等,可以先判断是不是整数。
id =trim(request("id"))
if id<>"" then
if not isnumeric(id) then
response.write"请提供数字型参数"
response.end
end if
id = clng(id)
else
response.write"请输入参数id"
response.end
end if
http://www.bkjia.com/PHPjc/629725.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629725.htmlTechArticle1.如果动态构造的sql语句中包含参数,请必须对参数做如下操作 a.将'(单引号)替换成''(两个单引号) b.将--(注释符)替换掉 c.将参数加入语句时...
内容总结
以上是互联网集市为您收集整理的有效防止SQL注入漏洞详细说明_PHP教程全部内容,希望文章能够帮你解决有效防止SQL注入漏洞详细说明_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。