引用:http://msdn.microsoft.com/zh-cn/library/w1sw53ds(VS.80).aspx
ASP.NET
脚本侵入概述
从浏览器的角度来看,网页只是一个长字符串。浏览器会按顺序处理这个字符串,在此过程中,会显示某些字符,同时按特殊规则解释其他字符(如 <b> 和 <script>)。如果恶意用户可以将某些特殊字符插入到页中,则浏览器将不知道这些字符不应该处于该位置,将作为页的一部分处理它们。
一个简单化的脚本利用的工作方式如下所示。如果应用程序允许用户发布对最新影片的评论以供其他用户阅读,则利用脚本的步骤可以是:
恶意用户还可以使用其他方法来利用脚本。大多数脚本利用都会要求应用程序接受恶意输入,并将其插入到页中(或回显它),浏览器将在该页中执行它。这种利用带来的潜在损害取决于所执行的脚本。它可以是无足轻重的,如在浏览器中弹出的烦人的消息。但是,它也可能会窃取 Cookie、窃取用户输入(如密码),甚至在用户的计算机上运行本机代码(如果对 Internet 安全性的要求不严格),从而造成严重的损害。
有关防止脚本利用的信息,请参见如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入。
有一种脚本利用的变体可以导致恶意 SQL 语句的执行。如果应用程序提示用户输入信息并将用户的输入串联为表示 SQL 语句的字符串,则会出现这种情况。例如,应用程序可能提示输入客户姓名,目的是为了执行类似如下的语句:
"Select * From Customers where CustomerName = " & txtCustomerName.Value
但是,对数据库有所了解的恶意用户可能使用文本框输入包含客户姓名的嵌入式 SQL 语句,产生类似如下的语句:
Select * From Customers Where CustomerName = 'a' Delete From Customers Where CustomerName > ''
执行该查询时,就会危害数据库。
防止脚本利用的主要方法就是决不信任来自用户的信息。假定从浏览器发送到您的应用程序的任何数据都包含恶意脚本。
同样,每次将字符串写入页时,您都应该假定字符串可能包含恶意脚本(除非您自己以编程方式创建了字符串)。例如,在从数据库中读取字符串时,您应该假定它们可能包含恶意脚本。安全意识很强的开发人员甚至不信任他们自己的数据库,理由是他们认为恶意用户可能有办法篡改数据库。
ASP.NET 为您提供了几种有助于防止脚本利用的方法:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有