脚本侵入

MSDN脚本侵入概述

从浏览器的角度来看,网页只是一个长字符串。浏览器会按顺序处理这个字符串,在此过程中,会显示某些字符,同时按特殊规则解释其他字符(如 <b> 和<script>)。如果恶意用户可以将某些特殊字符插入到页中,则浏览器将不知道这些字符不应该处于该位置,将作为页的一部分处理它们。

一个简单化的脚本利用的工作方式如下所示。如果应用程序允许用户发布对最新影片的评论以供其他用户阅读,则利用脚本的步骤可以是:

  1. 应用程序显示一个用户可以输入评论的窗体。恶意用户编写了一个其中包含 <script> 块的评论。
  2. 发送窗体,恶意用户的评论将存储在数据库中。
  3. 另一用户访问该站点。在构造页时,应用程序会从数据库中读取评论并将它们放在页中。恶意用户的 <script> 块将写入页中,就好像它是文本评论一样。
  4. 当第二个用户的浏览器显示此页时,它将遇到 <script> 块并执行它。

恶意用户还可以使用其他方法来利用脚本。大多数脚本利用都会要求应用程序接受恶意输入,并将其插入到页中(或回显它),浏览器将在该页中执行它。这种利用带来的潜在损害取决于所执行的脚本。它可以是无足轻重的,如在浏览器中弹出的烦人的消息。但是,它也可能会窃取 Cookie、窃取用户输入(如密码),甚至在用户的计算机上运行本机代码(如果对 Internet 安全性的要求不严格),从而造成严重的损害。

有关防止脚本利用的信息,请参见如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入

时间: 2024-08-08 08:49:36

脚本侵入的相关文章

如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入

大多数脚本利用发生在用户可以将可执行代码(或脚本)插入您的应用程序时. 默认情况下,ASP.NET 提供请求验证.只要窗体发送包含任何 HTML,该验证都会引发错误. 您可以使用下列方法防止脚本利用: 对窗体变量.查询字符串变量和 Cookie 值执行参数验证. 该验证应包括两种类型的验证:可以将变量转换为所需类型(如转换为整数.日期时间等)的验证,以及所需范围或格式的验证. 例如,应该使用 Int32.TryParse 方法来检查应为整数的窗体发送变量,以验证该变量是否确实为整数. 而且,还应

ASP.NET 请求处理完整过程

请求过程 1.客户端发送请求给服务器端. 2.首先由服务器端的HTTP.SYS内核模块接受,根据端口分发给IIS(或者其他web服务器软件). 3.IIS(由一个软件进程,一个w3svc服务组成)接收到请求后,会根据端口分发给指定的工作进程 4.工作进程会对所请求的文件的文件扩展名进行检查,交给对应的扩展程序处理.(如 .aspx..ascx..ashx 和 .asmx则交给aspnet_isapi.dll扩展程序) 5.当请求为.aspx时,扩展程序会交给ASPNetRuntime托管环境调用

ASP.NET 运行机制续(完结)

上一篇说到applicationInstance会执行一些列的事件.下面是我在msdn上找到有关asp.net程序生命周期相关的描述及图片 声明周期的起始 ASP.NET 应用程序的生命周期以浏览器向 Web 服务器(对于 ASP.NET 应用程序,通常为 IIS)发送请求为起点. ASP.NET 是 Web 服务器下的 ISAPI 扩展. Web 服务器接收到请求时,会对所请求的文件的文件扩展名进行检查,确定应由哪个 ISAPI 扩展处理该请求,然后将该请求传递给合适的 ISAPI 扩展. A

ASP.NET --Form身份验证

本文收集自----MSDN 一:Forms 身份验证流程 在 Forms 身份验证方案中,应用程序直接从用户那里收集名字和密码等凭据,并自己判断这些信息的真实性.应用程序不使用 IIS 身份验证,但 IIS 身份验证设置可以影响 Forms 身份验证.作为一项原则,当您使用 Forms 身份验证时,请在 IIS 中启用匿名访问.否则,如果用户未通过 IIS 身份验证,他们甚至无法访问应用程序以便向 Forms 身份验证提供用户名和密码. 此方案中的数据流如下图所示. Forms 身份验证 此图说

管线事件

asp.net生命周期的管道事件-ihttpmodule,在客户端发送请求的时候,是要通过asp.net的管道事件 原理 1.HTTP.SYS(是操作系统的核心组件,能够让任何应用程序通过它提供的接口,以http协议进行信息通讯)接收到Http请求[是对该web应用的第一次访问] 2.AppDomianFactory为该web应用创建一个应用程序域(AppDomain) 3.IsapiRuntime运行时被加载,首先它会创建一个IsapiWorkerRequest对象(用于封装Http请求)并传

IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述

本主题概述 ASP.NET 应用程序的生命周期,列出了重要的生命周期事件,并描述了您编写的代码将如何适应于应用程序生命周期.本主题中的信息适用于 IIS 5.0 和 IIS 6.0.有关 IIS 7.0 中的 ASP.NET 应用程序生命周期的信息,请参见 IIS 7.0 的 ASP.NET 应用程序生命周期概述. 在 ASP.NET 中,若要对 ASP.NET 应用程序进行初始化并使它处理请求,必须执行一些处理步骤. 此外,ASP.NET 只是对浏览器发出的请求进行处理的 Web 服务器结构的

[转]ASP.net Application 生命周期事件

生命周期事件和 Global.asax 文件 在应用程序的生命周期期间,应用程序会引发可处理的事件并调用可重写的特定方法.若要处理应用程序事件或方法,可以在应用程序根目录中创建一个名为 Global.asax 的文件. 如果创建了 Global.asax 文件,ASP.NET 会将其编译为从 HttpApplication 类派生的类,然后使用该派生类表示应用程序. HttpApplication 进程的一个实例每次只处理一个请求.由于在访问应用程序类中的非静态成员时不需要将其锁定,这样可以简化

MVC中输入的保护验证用:HttpServerUtility.HtmlEncode

安全说明: 上面的代码使用HttpServerUtility.HtmlEncode来保护应用程序的恶意输入 (即 JavaScript).详细信息请参阅如何: 在 Web 应用程序,通过应用 HTML 编码的字符串防止脚本侵入. 例如: public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: &q

IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)

IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的应用程序生命周期.IIS 7.0 还支持经典模式,其行为类似于在 IIS 6.0 中运行的 ASP.NET.有关更多信息,请参见 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述.IIS 7.0 集成管道是一种统一的请求处理管道,它同时支持本机代码和托管代码模块.实现 IHttp