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

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 212 ::
收藏到网摘: 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服务应用做好准备,同时确保当前应用的高质量。只有从应用的出生之日开始就采取正确的措施来确保其安全性,才能构造出高质量、安全的应用。