用ASP.NET 1.1 新特征防止Script攻击

原创 2005年03月01日 15:29:00
  网站的安全,很多时候,几乎代表了一个单位网络的安全。对于将网站作为企业对外形象的企业或者政府而言,网站安全更加重要。现在很多网站都安装了防火墙等安全设备,可是,一些简单的进攻,反而颇为让人伤脑筋。比如,通过网站,提交恶意代码,这就是比较难以防范的一种进攻,一个比较简单的具体举例,在需要用户提交EMAil地址的数据项,如果用户提交以下信息:<SCRIPT>alert(“hello from script”)</SCRIPT>,结果会怎样呢?当别的用户进入含有这个信息的页面的时候,就会见到一个弹出信息,这是以上提交的恶意代码直接运行的结果,如果这样的代码稍微改动,更加复杂一点,破坏效果自然更加惊人。程序员在设计程序的时候,如果没有较好考虑对用户提交信息进行适当的检测,很容易就会因为程序的不健全而导致不可预料的后果。在ASP和ASP.NET1.0或者其他任何开发工具中,我们不得不在程序中采用一些技巧来防范用户提交的恶意代码,而程序设计的原则就是“假定每一个用户提交的信息都是恶意的”,所以,程序员不得不拿出部分精力来做提交信息的检测工作。而在最新发布的ASP.NET1.1中,这样的检测就简单甚至是不必了。现在,我们来看一个具体的例子:

以上的代码很简单,就是将用户输入的信息进行现实,运行以后是这样的:

以上我们输入一个简单的“Hello world”,可以看到,页面很正常的进行了显示,那么,如果我们输入“<script>alert("hello!")</script>”会怎样呢?现在就来看看运行结果:

很明显,是一个错误信息:“potentially dangerous Request.Form value was detected…”意思是用户提交的信息有潜在的危险,所以,不予提交。这就是Asp.NET的最新特征之一,将用户提交信息的潜在危险排除到最小,当然,要使用这个最新特征是很简单的,直接在页面中可以这样设定:

<%@ Page validateRequest="true" %>

或者,也可以在网站配置文件Web.config中设定:

<configuration>

<system.web>

<pages validateRequest="true" />

</system.web>

</configuration>

当然,要取消这个特征也是可以的,直接在以上设定中将False改为True就可以了。我们强烈建议将以上特征打开,设置为True,对每一个用户的输入进行检测。现在,我们看看如果用户现在关闭以上特征,页面运行会有怎样的结果:

可以看到,以上页面运行以后,出现了用户输入直接运行的结果:弹出一个提示信息。

那么,如果用户不希望使用Asp.NET1.1的以上新特征,而又希望可以比较好的实现程序的安全性,应该怎样做呢?可以直接使用Server.HtmlEncode(string)来现实,将所有用户的输入信息转换为HTML格式,也就是原封不动(现实出来和输入的一样)的现实用户输入的信息而不对恶意代码进行运行。现在,我们来看一个举例:

以上代码和前面提到的代码唯一的区别就是对用户输入进行了HTML编码,运行结果如下:

我们可以看到,用户带有潜在危险的输入,已经完全被避免了。以上方式和采用ASP.NET1.1的新特征相比,有什么不一样呢?以上方式依然接受用户输入,只是将危险代码进行了修改;而使用ASP.NET1.1的新特征,危险代码是完全拒之门外的,不会对数据进行处理。
以上我们试验了ASP.NET1.1的最新功能,并将它与别的技术进行了对比。编程中,我们建议直接使用ASP.NET1.1提供的新特征来实现危险排除,而不是采用HTML编码的方式。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[翻译]asp.net ajax xml-script教程(三)

====================================================== 注:本文源代码点此下载 =============================...

asp.net core 1.1 dotnet 生成DbContext

环境win7+vs2017+SqlServer 2012目的解决在vs2017创建net core 1.1 项目,生成 DbContext 文件准备 创建一个空的 net core 1.1 的工程 运...

How to install ASP.NET 1.1 with IIS7 on Vista and Windows 2008

OverviewYou can use the Web Platform Installer (Web PI) to easily install IIS, and applications that...

【Web API系列教程】1.1 — ASP.NET Web API入门

前言HTTP不仅仅服务于web页面,同时也是构建暴露服务和数据的API的强大平台。HTTP有着简单、灵活和无处不在的特点。你能想到的几乎所有平台都包含有一个HTTP库,所以HTTP服务可以遍及广泛的客...
  • NoMasp
  • NoMasp
  • 2016-02-24 18:48
  • 8814

windwos2003 64位机 部署asp.net1.1 问题

出处:http://blog.csdn.net/W3031213101/article/details/5567305 这几天一直没一个问题折磨着,在windows2003 64位机上 布局好了as...

Pro ASP.NET Core MVC(四)【C#关键特征】

在本章中,我描述了Web应用程序开发中使用的C#特征,这些特征尚未被广泛理解或经常引起混淆。 这不是关于C#的书,但是,我仅为每个特征提供一个简单的例子,以便您可以按照本书其余部分的示例,并在自己的项...
  • WuLex
  • WuLex
  • 2017-05-20 18:12
  • 661

ASP.NET网站防止SQL注入攻击

目的:对输入的字串长度,范围,格式和类型进行约束. 在开发 ASP.NET 程序时使用请求验证防止注入攻击. 使用 ASP.NET 验证控件进行输入验证. 对不安全的输出编码. 使用命令参数集模式防止...

ASP.NET防止注入攻击

ASP.NET防止注入攻击   2008-08-25 17:21:53|  分类: .Net与C#技术 |  标签: |字号大中小 订阅   在ASP.NET中防...

在ASP.NET中防止注入攻击

应用范围: ASP.NET vertion 1.1ASP.NET vertion 2.0 概要: 文本主要介绍如何校验用户输入从而防止注入式攻击.校验用户输入是非常必要的,几乎所有程序级...

asp.net 防止SQL注入攻击

asp.net网站防止SQL注入攻击,只要做到以下三点,网站就会比较安全了而且维护也简单。 一般的办法是每个文件都修改加入过滤代码,这样很不方便,下面介绍一种方法,可以从整个网站防止注入。 一、We...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)