"景先生毕设|www.jxszl.com

浅析Asp.Net常见安全漏洞及其解决方案【字数:1935】

2023-04-14 15:01编辑: www.jxszl.com景先生毕设
浅析Asp.Net常见安全漏洞及其解决方案
论文导读::目前基于ASP的网站主要安全问题。但是,需要看到使用ASP编制的网站的安全性不容忽视。
论文关键词:网站,安全,ASP.Net,IIS


1、目前基于ASP的网站主要安全问题
ASP具有简单、易学性,用户可以方便的编制出动态网页。但是, 需要看到使用ASP编制的网站的安全性不容忽视。非法用户通过ASP网页的一些漏洞,攻入系统,可以获得合法用户的权限, 或者获得服务器的权限。常见有如下几种攻击方式。
1.1 SQL注入式攻击
很多网站都有用户登录页面,需要验证用户名和密码。当验证时,检查用户输入的登录名和密码是否存在于数据库中,如果存在,证明该用户合法,反之,为不合法用户。例如,在测试中,输入一个已经存在的用户名:administrator,密码输入1’or‘1’=‘1IIS,单击登录按钮,非法登录成功。
1.2 查询串式数据传递
查询串式是一种URL 方式,是实现Web 页面间数据传递最基本的方法,操作简单,可以很方便的实现不同Web 页面间的数据传递,但其安全性比较差,其实现方法就是将要传递的数据附在URL后面,如http://localhost//jiaoyu//learning.aspx?username=teacher,其中?后面所跟着的字符串便是传递的数据,可以使用Request对象来获取传递的参数,如Request("username")。
1.3 暴力破解用户名密码
非法用户惯用的手段, 如果知道了某个用户的用户名后。通过暴力手段的形式,不断尝试各种密码,以破解其密码,而登录系统。对于一些简单的密码, 这种方法可行,如果一些复杂的密码,则需要较长的时间。
1.4 绕过验证直接进入ASP 页面的漏洞
如果用户知道了一个ASP 页面的路径和文件,而该文件需要经过验证才能进去,但是用户直接输入这个ASP 页面的文件名,就有可能绕过验证。如在IE 中输入如下代码:
http://serverURL/search.asp芽page=1这样就可能看到系统管理员才能看到的页面。为了防止这种情况会在search.asp 的开头加个判断,如判断session(system_name)是否为空,如果不为空时就能进入,这样上面的URL 请求就不能直接地入管理员页面。但这种方法同样也存在漏洞,如果攻击者先用一个合法的账号,或者在本地机上生成一个session,如session(system_name)=admin, 因为session不为空IIS,同样也能绕过验证直接进入管理员页面。
1.5 Access 数据库漏洞
在用Access 做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access 数据库的路径和数据
库名称,那么就能够下载这个Access数据库文件,这是非常危险的。例如,Access 数据库student.mdb 放在虚拟目录下的database 目录中,那么在浏览器中输入:http: // serverURL /database / student.mdb如果student.mdb 数据库没有事先加密的话,那么student.mdb 中所有重要的数据都掌握在别人的手中。另一方面,由于Access数据库的加密机制也比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb 文件从地址&H42开头的区域内论文网站。可以很轻松地编制解密程序,很容易获得任何Access 数据库的密码。因此,数据库如果被解密,那么就很容易对整个网站进行控制了。
2、防范措施
2.1 验证用户输入
网站编程者在编程时, 就应该把安全放在首位。在要求用户输入的地方,或网页传递变量的地方,都要完全验证,以防止SQL注入等的漏洞产生。比如:使用如下方法验证用户是否输入了不符合要求的信息。SQL_injdata=!|@|#|$|%|^|&|*|(|)|=//
在此输入需要验证的非法字符a=slit(SQL_injdata,|)input_data=request(username)//取得
用户输入的用户名
for i = 0 to ubound(a)
if instr(input_data,a(i))>0 then
response.write(您输入的用户名还有非法输入!)
response.end()
end if
next
2.2 禁止用户多次尝试登录
现在有些自动登录程序, 可以重复尝试登录系统。这时,可以限制用户尝试登录系统的次数,比如1小时内只能尝试登录10
次等等。另一种方法是, 网页随机生成数字,用户只有输入这些有效数字,才能有可能登录系统, 这阻断了一些自动登录程序
的干扰。
2.3 防止用户绕过登录页面直接进入页面
我们可以在用户登录时提交一个Session对象,比如Session["UserId"],将登录用户的id提交。在进入重要页面时,先验证Session["UserId"]是否为NULL值,是否存在于数据库中,以此来判断用户是否登录。
private void Page_Load(objectsender, System.EventArgs e)
{
if(Session["UserId"]= =null)
{
??//异常处理
}
}
2.4 保护数据库安全
2.4.1 防止数据库被下载
数据库,特别是Access,安全性不高IIS, 要加强数据库的安全,首先要防止数据库被下载。在程序设计中,应该尽量使用ODBC 数据源,不把数据库名写在程序中,否则数据库名会随源码的失密而一同失密。另外,将数据库存储在Web根目录以外的地方也是一个比较行之有效的方法,就算攻击者找到了数据库存放的路径,也无法通过http 的方式进行下载。
2.4.2 对数据库进行加密
为确保数据库的完整,免遭破坏、泄密和窃取,主要采用数据备份、用户标识和鉴定、存取控制、数据库的加密(如RAS 密码或md5 加密技术),同时利用DBMS(数据库管理系统)所提供的各种安全措施,在应用软件上增加对数据的操作安全、对算法进行加密操作等。
3、结束语
ASP编制的网站数量越来越多,现在,人们已逐渐意识到网站的安全性问题。由于ASP使用人数多, 发现其漏洞的可能性就会更大。这就需要编程人员多关心这方面的安全知识, 在编程中养成好的编程习惯,避免一些常见的安全漏洞。同时,网站服务器的管理也是很重要的一方面, 需要重视服务器安全的配置。以上只是简单探讨了ASP网站的一些安全漏洞和一些解决措施, 有些更深入的探讨需要编程人员在实践中掌握。

参考文献
[1]张艳.ASP 常见漏洞及对策. 北京:电脑编程技巧与维护,2008(3):86-89.
[2]潘飞,王继成,等.ASP 网站安全问题的研究. 北京:网络安全技术与应用,2-008(6):80-81.
[3]李彦广,张洁.基于IIS+ASP+ACCESS网站的安全隐患及防范. 商洛:商洛学院学报,2008,22(10):59-61.

原文链接:http://www.jxszl.com/lwqt/yzlw/357272.html