日期:2014-05-17  浏览次数:20386 次

ASP.NET登录安全性问题
使用存储过程 DL_CheckUser
当页面用户名和密码全部输入后
login.aspx页面部分代码
if(txtusname.text!=string.empty&&txtpwd!=string.empty)
{
  session["userName"]=username;
  response.write("default.aspx");
}

今天使用了IBM的appscan扫描工具进行扫描,发现如下错误
以前一般都是这么写,现在问题来了

1. 使用 SQL 注入的认证旁路 
 (txtPassword) http://xxx.vicp.net/login.aspx 
 (txtUserName) http://xxx.vicp.net/login.aspx 
针对这个问题的解决方案
若干问题的补救方法在于对用户输入进行清理。 
通过验证用户输入未包含危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的 Javascript 代码、运行各种操作系统命令,等等。 

2.会话标识未更新
针对这个问题的解决方案
始终生成新的会话,供用户成功认证时登录。 
防止用户操纵会话标识。 
请勿接受用户浏览器登录时所提供的会话标识


第一个,我已经使用存储过程,出于客户端攻击,网上查了下资料,列如:
HashMethod hm = new HashMethod();
string userPassword=Server.HtmlDecode(hm.Encrypto(txtPassword.Text.Trim()));
密码经过加密,而且使用Server.HtmlDecode()方法获取客户端的值,这样还是没有通过他的安全检验。。。

第二个,每次生成新的会话,不是很了解这句话的意思。请安全方面的高手指点~大家也可以讨论下 一般登录要多安全才能通过这些安全软件的扫描。。。

http://www.fsnws.com/html/net/anquanxiangguan/20090826/83.html
IBM Rational AppScan下载,7z文件格式,破解版的,大家可以去下载扫描下自己的web应用程序。

IBM Rational AppScan Standard Edition V7.8.1多语言版本,最关键是支持简体中文,IBM Rational AppScan 是很不错的Web应用安全扫描工具,和Acunetix Web Vulnerability Scanner以及HP Webinspect相比它支持中文,appscan在每次扫描到漏洞后,会给出相应的java/.net/php等的解决方案,让你一目了然。内含appscan破解补丁,先用keygen生成证书,再运行破解程序,就可以成功导入证书了。破解之后可以升级软件。



------解决方案--------------------
2.会话标识未更新 
针对这个问题的解决方案 
始终生成新的会话,供用户成功认证时登录。 
防止用户操纵会话标识。 
请勿接受用户浏览器登录时所提供的会话标识 


一般理解是这样:你的登录页面会有一个session id,当你登录成功后,应该使用新的session id而不保持登录页面的session id,这样即使别人在网络上截获了你的登录页面的session id,仍然无法伪造客户身份进入系统。
如果使用同样的session id,则可能被截获并且伪造客户身份进入系统.

你去看看微软的windows live登录过程就大概知道了,是有一层转接的

------解决方案--------------------
登录数据参数查询信息
数字证书
减少使用cookie
------解决方案--------------------
如果您的客户接受强身份认证方式,那么客户端可以采用USBKey的方式登录、挑战-应答的认证方式
------解决方案--------------------
不要用SESSION认证,用 身份验证

读取数据用SQL参数化读取