不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
两例'or''='漏洞防止方法
编辑:dnawo 日期:2007-02-10
在做会员登录模块时,如果密码未加密或没有对提交的信息进行过滤,那么就可能会有or漏洞。下边我们先说说or漏洞的原理:
当用户提交用户名及密码后,服务器程序并对数据库进行查询,如果有与之匹配的用户名及密码,那么登录就成功。这边查询的SQL语句为:sql = "select * from user where username='" & username & "' and password='" & password & "'"
如果用户提交的用户名和密码都为:'or''=',那么上边的SQL语句就成了:sql = "select * from user where username='" & 'or''=' & "' and password='" & 'or''=' & "'" 即:select * from user where username=''or''='' and password=''or''='',这样一来,查询的结果总为true,自然也就登录成功了。针对这个原理,我们有两种方法可以防止or漏洞:
1.字符过滤
就是对用户提交的内容进行过滤,如将单引号、等号、or等过滤掉,那么自然SQL就能查询出实际的结果了。
2.对密码进行加密
现在很多用户系统都使用了md5函数对密码进行了加密,那么password='(被加密的'or''=')'的结果肯定为false,也能防止了or漏洞。
后记:在实际运用过程中,我们一般都是将上边两种方法一起使用,从而阻止利用or漏洞进行登录。
当用户提交用户名及密码后,服务器程序并对数据库进行查询,如果有与之匹配的用户名及密码,那么登录就成功。这边查询的SQL语句为:sql = "select * from user where username='" & username & "' and password='" & password & "'"
如果用户提交的用户名和密码都为:'or''=',那么上边的SQL语句就成了:sql = "select * from user where username='" & 'or''=' & "' and password='" & 'or''=' & "'" 即:select * from user where username=''or''='' and password=''or''='',这样一来,查询的结果总为true,自然也就登录成功了。针对这个原理,我们有两种方法可以防止or漏洞:
1.字符过滤
就是对用户提交的内容进行过滤,如将单引号、等号、or等过滤掉,那么自然SQL就能查询出实际的结果了。
2.对密码进行加密
现在很多用户系统都使用了md5函数对密码进行了加密,那么password='(被加密的'or''=')'的结果肯定为false,也能防止了or漏洞。
后记:在实际运用过程中,我们一般都是将上边两种方法一起使用,从而阻止利用or漏洞进行登录。
评论: 1 | 引用: 0 | 查看次数: 5371
发表评论
请登录后再发表评论!