大多数脚本利用发生在用户可以将可执行代码(或脚本)插入您的应用程序时。 默认情况下,ASP.NET 提供请求验证。只要窗体发送包含任何 HTML,该验证都会引发错误。

您可以使用下列方法防止脚本利用:

  • 对窗体变量、查询字符串变量和 Cookie 值执行参数验证。 该验证应包括两种类型的验证:可以将变量转换为所需类型(如转换为整数、日期时间等)的验证,以及所需范围或格式的验证。 例如,应该使用 Int32.TryParse 方法来检查应为整数的窗体发送变量,以验证该变量是否确实为整数。 而且,还应该检查得到的整数,以验证该值是否在所需值范围之内。

  • 将值写回响应时,向字符串输出应用 HTML 编码。 这有助于确保用户提供的所有字符串输入将以静态文本形式呈现在浏览器中,而不是呈现为可执行的脚本代码或已解释的 HTML 元素。

HTML 编码使用 HTML 保留字符转换 HTML 元素,以便显示它们而不是执行它们。

向字符串应用 HTML 编码

显示字符串之前,调用 HtmlEncode 方法。 HTML 元素会转换为浏览器将显示(而不解释为 HTML)的字符串表示形式。

下面的示例说明 HTML 编码。 在第一个实例中,在显示用户输入之前对其进行编码。 在第二个实例中,在显示数据库中的数据之前对其进行编码。

注意:

只有通过添加 @ Page 特性 ValidateRequest="false" 在页中禁用请求验证时,此示例才起作用。 建议不要在成品应用程序中禁用请求验证,因此,请确保在查看本示例之后重新启用请求验证。

 private void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text = Server.HtmlEncode(TextBox1.Text);
Label2.Text =
Server.HtmlEncode(dsCustomers1.Customers[].CompanyName);
}

如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入的更多相关文章

  1. 如何:通过将HTML编码应用于字符串来防止Web应用程序中的脚本漏洞

    当用户可以将可执行代码(或脚本)添加到您的应用程序中时,会发生大多数脚本攻击.默认情况下,ASP.NET提供请求验证,如果表单发布包含任何HTML,则会引发错误. 您可以通过以下方式帮助防止脚本漏洞利 ...

  2. java对含有中文的字符串进行Unicode编码

    public class MyUtil { public static void main(String[] args) throws Exception { String s = "a中a ...

  3. Python中的字符串与字符编码

    本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章. ...

  4. AC日记——字符串P型编码 openjudge 1.7 31

    31:字符串p型编码 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个完全由数字字符('0','1','2',…,'9')构成的字符串str,请写出str的p型编码串.例如: ...

  5. decode 函数将字符串从某种编码转为 unicode 字符

    环境:Ubuntu, Python 2.7 基础知识 这个程序涉及到的知识点有几个,在这里列出来,不详细讲,有疑问的直接百度会有一堆的. 1.urllib2 模块的 request 对像来设置 HTT ...

  6. 普通字符串与Hex编码字符串之间转换

    import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Hex; public clas ...

  7. 与QString("我是中文")完全一样,你必须告诉tr这个窄字符串是何种编码?你不告诉它,它就用latin1。于是所谓的乱码问题就出来了。

    在论坛中漂,经常遇到有人遇到tr相关的问题.用tr的有两类人: (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr (2)另一类人,确实是出于国际化的需要,将需要在界面上显示的 ...

  8. 【转】Python中的字符串与字符编码

    [转]Python中的字符串与字符编码 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常 ...

  9. 中文字符串和UTF-8编码字符串相互转换

    中文字符串和UTF-8编码字符串相互转换 //UTF字符转换 var UTFTranslate = { Change: function(pValue) { ) { ).replace(/(%u)(\ ...

随机推荐

  1. IntelliJ IDEA 注册码

    IntelliJ IDEA 注册码 *.lanyus.com及*.qinxi1992.cn下的全部授权服务器已遭JetBrains封杀 请搭建自己的IntelliJ IDEA授权服务器,教程在http ...

  2. jquery ajax事件

    $.ajax({ type : 'POST', url : 'user.php', data : $('form').serialize(), success : function (response ...

  3. eclipse导入myeclipse的web项目

    1.import> 2.进入项目目录,找到.project文件,打开 3.找到<natures> ...</natures>代码段,添加如下标签内容并保存 <nat ...

  4. (转)ASP.NET MVC4 部署错误 Could not load file or assembly

    使用VS2010 测试ASP.NET MVC 4 Web API 在部署时候遇到了问题,发现园友有解决的方式,因此转载.         我的解决方式有两种:使用VS2015将VS2010的项目重新发 ...

  5. sql查询,如何增加一列

    select * from (select 'finish_order_info' as table_name,count(1)as num from fraudorder.finish_order_ ...

  6. jxl 导入excel以及日期格式处理

    先建一个excel文件abc.xls.放到E盘根目录下.形如下: name secondName hot1 leave1 hot2 leave2 然后在数据库里建表. CREATE TABLE `na ...

  7. cocos2d-x的环境的搭建

    1.首先提出一个我从开始接触cocosstudio和cocos2d-x的认识的误区,就是cocosstudio和cocos2d-x的区别是什么呢? cocosstudio是辅助工具,只不过它可以帮助我 ...

  8. 内网安装ubuntu包

    到http://packages.ubuntu.com搜索包下载下来,  再安装.

  9. Android开发-API指南-进程与线程

    Processes and Threads 英文原文:http://developer.android.com/guide/components/processes-and-threads.html ...

  10. 【LeetCode】3.Longest Substring Without Repeating Characters 最长无重复子串

    题目: Given a string, find the length of the longest substring without repeating characters. Examples: ...