通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 原创精华 >> 文章正文
推荐:另类安全验证登陆的方法
责任编辑:古典辣M°   更新日期:2005-12-19
 
目前网上的论坛以及各种门户网站都会有一个用户登陆的界面,对登陆入口处用户名和密码的输入验证无疑就是网站安全的第一道防线,而关于用户输入有句名言永远是正确的:“凡是用户的输入都是非法的。”从安全的角度来说,只要有用户输入的地方就一定有安全漏洞,只是何时被何人发现而已,尤其对于现在被大量使用的各种集成建站工具软件来说,由于其源代码是公开的,任何人只要有时间、有决心认真去读代码,输入漏洞的被发现只是迟早的事情。对于登陆的输入验证,自从最早的’ or ‘’=’被发现开始,代码编写者对输入的用户名及密码的字符串过滤就越来越严格,以至于现在的很多系统对合法的用户名和密码字符串有严格的限定。笔者从密码的MD5加密储存过程想到一种用户名合法性的另类验证法,目的是完全绕过用户名输入中可能的非法字符,从而跳出越来越严格的合法字符集和正则表达式VS不断有新发现的非法字符的恶性循环。
其原理简单来说就是借鉴密码的验证方法,增加一个用户名经MD5加密的数据项(user_name_md5),验证时比较的是加密后的用户输入的用户名,从而降低用户输入过滤不周全的风险。
如原来的验证方法一般描述为:
user_id=Request.Form(“USER_ID”) //取输入的用户名
user_id=Check(user_id) //验证用户名是否含有非法字符
passwd=Request.Form(“PASSWD”) //取输入的密码
passwd_md5=Encode_MD5(passwd) //对输入的密码进行MD5加密变换
sql=”SELECT passwd from userlib where username=’”&user_id&”’” //SQL语句
rs.open sql,conn,1,1 //执行SQL命令,最大的风险点
if passwd_md5=rs(“passwd”) then to_do_login //验证密码
else Response(“error”)
其中如果user_id中的字符过滤不严格就会导致SQL语句的执行出错,从而提供给输入人一个试探系统和执行其它SQL命令的机会。如果采用本方法,对输入的USER_ID不进行过滤而是直接进行MD5加密,即Check(user_id)改为Encode_MD5(user_id),然后SQL语句改为
SELECT passwd from userlib where user_name_md5=user_id
由于加密后的user_id内容为二进制字符串,从而保证整个SQL语句不会有执行的错误可能,使得整个验证过程完全绕过了输入内容中的可能风险信息,提高验证的安全性。
更进一步来分析,如果比较的对象是由用户名加密码组合后变换的MD5字符串,则安全性更有保障。如:
check_string=user_id+passwd
check_md5=Encode_MD5(check_string)
SQL=”SELECT all from userlib where user_check_md5=’”&check_md5&”’”
本方法增加的开销为每个用户名一个数据段的数据空间,以及验证用户登陆时作多一次MD5计算(第二种方法则只要做一次),但避免了对用户输入过滤的不完全性可能,应当说是牺牲了少许资源来换取跟安全的系统。如果再配合对登陆尝试的IP限定和登陆频率的限定,从登陆的安全角度来说应当是比较全面的了。
本文行文仓促,考虑不周之处,还请行家提点。
  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题