当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 五种常见的ASP.NET安全缺陷

ASP.NET
赫赫大名的A*寻路算法(vb.net版本)
asp.net(c#)下Jmai去说明 使用与下载
[原创]完美解决Could not load file or assembly ''AjaxPro.2'' or one of its dependencies. 拒绝访问。
asp.net下gridview 批量删除的实现方法
用CSS实现图片倾斜 只支持IE
.net get set用法小结
vs 不显示行号的操作方法
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
ASP.Net不执行问题一解
asp.net 无限分类
让VS2008对JQuery语法的智能感知更完美一点
扩展方法ToJSON() and ParseJSON()
asp.net下PageMethods使用技巧
Linq to SQL Delete时遇到问题的解决方法
实现ASP.NET多文件上传程序代码
ASP.NET AJAX 1.0 RC开发10分钟图解
asp.net get set用法
ASP.NET下使用WScript.Shell执行命令
asp.net2.0实现邮件发送(测试成功)
Asp.net 无限级分类实例代码

五种常见的ASP.NET安全缺陷


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 173 ::
收藏到网摘: n/a

2.5跨站脚本执行

◎对外发的数据进行编码

跨站脚本执行(Cross-sitescripting)是指将恶意的用户输入嵌入到应答(HTML)页面。例如,下面的ASP.NET页面虽然简单,却包含着一个重大的安全缺陷:

<%@PageLanguage="vb"%>
<asp:Labelid="Label1"runat="server">
标签文字
</asp:Label>
<formmethod="post"runat="server"ID="Form1">
请在此处输入反馈信息<br>
<asp:TextboxID="feedback"runat="server"/><br>
<asp:Buttonid="cmdSubmit"runat="server"
Text="提交!"OnClick="do_feedback">
</asp:Button>
</form>
<scriptrunat="server">
Subdo_feedback(senderAsObject,eAsSystem.EventArgs)
Label1.Text=feedback.Text
EndSub
</script>

■风险分析

攻击者可以用JavaScript代码构造一个恶意的查询,点击链接时JavaScript就会运行。举例来说,脚本可以通过下面的用户输入来嵌入:

<script>alert(document.cookie)
</script>

■解决方案

在一个双层的安全体系中,对HTML页面中出现的外发用户数据执行输入验证和HTML编码,确保浏览器只把用户输入数据当成纯粹的文本,而不是其他具有特殊含义的内容,例如HTML代码、JavaScript脚本。

对于本例,只要加入一个HtmlEncode调用即可:

Label1.Text=Server.HtmlEncode(feedback.Text)

这样,应答HTML流将包含用户输入内容的HTML编码版本,也就是说,浏览器不会执行用户输入的JavaScript代码,因为根本不存在HTML的“<SCRIPT>”标记,用户输入的“<”和“>”字符已经被替换成HTML编码版本,即“<”和“>”。

三、使用自动安全测试工具

由于客户需求不断变化,一些单位平均每三个月就要部署新的应用,同时由于人员流动,所以对开发者快速开发健壮的、高质量的代码寄予很高的期望。虽然对所有开发者进行代码安全技术的培训是十分必要的,但不可否认,自动检测代码安全漏洞的工具也有助于快速开发安全的应用程序。

到目前为止,开发者常用的工具只能涵盖功能测试的特定方面,例如性能测试,BUG/故障点侦查。人工检查代码有着许多与生俱来的局限,而且要求开发者具有丰富的代码安全经验,所以对于编写高质量的应用来说,面向应用程序安全及其在恶意环境下行为的工具也是十分关键的。

要迅速提高应用的质量和安全性,最有效的办法是给开发者提供一个自动测试应用的工具。如果在单元测试期间,工具能够检测出应用的安全缺陷,并将修补建议嵌入到代码之中,开发者就能立即找出代码中存在的错误,不仅方便了现有错误的修改,而且也有助于避免将来再犯同样的错误,不断地提高代码抗御攻击的能力。

结束语:Web服务应用正在爆炸式增长,越来越多的应用被推出到防火墙之外,安全性脆弱的Web应用面临的风险也只会有增无减。同时,为了在紧迫的时限之前快速完成应用开发,开发者面临的压力也越来越大。注重编写代码时的安全问题,同时投入必要的资源,这样才能为未来的Web服务应用做好准备,同时确保当前应用的高质量。只有从应用的出生之日开始就采取正确的措施来确保其安全性,才能构造出高质量、安全的应用。