新闻发布系统看了有一段时间了,很少遇到棘手的问题,基本上遇到最多的就是浏览器的兼容问题。
不过,在今天遇到了一个关于freeTextBox的安全问题。也就是用freeTextBox来添加新闻内容的时候,弹出如下警告:
出错内容:
先说一下,我的处理过程:
其实我们可以从出错信息中找到一些信息,我的做法:
ValidateRequest="false"
结果发现错误依旧,那么,再看出错信息,我们看到了这句话:请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。
然后再Web.config文件中做如下配置:
问题解决了!!!!
下面我们来总结一下:
一、分析原因:
ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力。
当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个
HttpRequestValidationExceptioin。也就是说,页面请求(request)时,含
有html或javascript等字符串时。ASP.NET会认为是危险的值,就会抛出辞异常。
当页面上使用了所见即所得编辑器(例如使用了fckeditor或FreeTextBox控件等)
的时候会发生此异常。
二、ASP.net4.0请求验证模式发生变化
参见:http://space.itpub.net/14466241/viewspace-669557
三、大家可以看一下这个官方的帮助文档,会对大家对这个问题的认识有所帮助的:
http://www.asp.net/whitepapers/request-validation
其实讲解了这个安全验证的由来,以及作用。
请大家注意一下这里:
其中讲到了如果取消了这个安全验证的话,而且想存储content的话,那么就需要对其进行编码工作。
本人也是刚刚接触asp.net,希望大家留下您的宝贵意见!!!!