两例'or''='漏洞防止方法

在做会员登录模块时,如果密码未加密或没有对提交的信息进行过滤,那么就可能会有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漏洞进行登录。

上一篇: IIS漏洞整理大全
下一篇: 表单和字段同名简化ASP语句
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 1 | 引用: 0 | 查看次数: 5371
发表评论
登录后再发表评论!