用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中,这样的检测就简单甚至是不必了。现在,我们来看一个具体的例子:0414a.jpg

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

0414b.jpg

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

0414c.jpg

很明显,是一个错误信息:“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,对每一个用户的输入进行检测。现在,我们看看如果用户现在关闭以上特征,页面运行会有怎样的结果:

0414d.jpg

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

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

0414e.jpg

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

0414f.jpg

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

asp.net 防止SQL注入攻击

asp.net网站防止SQL注入攻击,只要做到以下三点,网站就会比较安全了而且维护也简单。 一般的办法是每个文件都修改加入过滤代码,这样很不方便,下面介绍一种方法,可以从整个网站防止注入。 一、We...
  • bobttda
  • bobttda
  • 2016年03月09日 17:48
  • 686

Asp.net跨站脚本攻击XSS实例分享

Asp.net跨站脚本攻击XSS实例分享
  • yangzhenping
  • yangzhenping
  • 2015年10月10日 15:31
  • 3608

在ASP.NET MVC应用程序中防止JavaScript注入式攻击

在本文中,我们将探讨如何在ASP.NET MVC应用程序中有效地防范JavaScript注入式攻击的问题。   1、简介   在本文中,你将了解到JavaScript注入式攻击远比你可能想象的...
  • tiz198183
  • tiz198183
  • 2013年04月18日 17:25
  • 1230

SpringMVC防止XSS攻击

XSS全称为跨站脚本攻击 , 具体见百度百科 最常见的是用Filter来预防 , 就是创建一个新的httpRequest类XsslHttpServletRequestWrapper,然后重写一些g...
  • xingbaozhen1210
  • xingbaozhen1210
  • 2017年12月11日 17:48
  • 180

什么是CSRF攻击,如何在ASP.NET MVC网站中阻止这种攻击?

本文介绍什么是CSRF攻击,及如何在ASP.NET MVC网站应用程序中阻止CSRF攻击。
  • fanrong1985
  • fanrong1985
  • 2017年05月12日 02:28
  • 536

如何防止SQL注入攻击

如何防止SQL注入攻击            一、什么是SQL注入式攻击?   所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行...
  • shenxiuwen1989
  • shenxiuwen1989
  • 2015年03月12日 17:32
  • 1244

如何防止Session伪造攻击

如何防止Session伪造攻击 什么是SESSION伪造攻击: Session伪造攻击是一种非常流行的针对session的攻击方式.它之所以流行的主要原因是:它是一个攻击者获得一个有效的S...
  • caomiao2006
  • caomiao2006
  • 2014年09月02日 00:01
  • 3281

防止跨站攻击,安全过滤

Spring MVC防御CSRF、XSS和SQL注入攻击 本文说一下SpringMVC如何防御CSRF(Cross-site request forgery跨站请求伪造)和XSS(Cro...
  • zpf0918
  • zpf0918
  • 2015年02月26日 13:55
  • 2697

如何php防止XSS攻击

什么是XSS:这里通俗的讲,就像是SQL注入一样,XSS攻击也可以算是对HTML和JS的一种注入。你本来希望得到是从用户那得到一段有用的文本文字,但用户提交给你的却是别有用心的可执行javascrip...
  • TeachYouToBe
  • TeachYouToBe
  • 2017年05月24日 16:49
  • 1458

ASP.NET(C#)后台安全登陆代码(防XSS攻击\万能密码漏洞)

string ispostback = Context.Request["ispostbask"]; string k8user = this.txtUser.Text.Trim();...
  • yanzhibo
  • yanzhibo
  • 2014年02月22日 23:24
  • 4445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用ASP.NET 1.1 新特征防止Script攻击
举报原因:
原因补充:

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