无论是asp.net WebForm开发还是asp.net MVC开发,如果从客户端提交到服务器端中的数据包含html标记。
默认.net framework在表单提交过程中会对提交的内容进行检测,就会报“从客户端检测到有潜在危险的Request.Form值”提示。
虽然这是出于安全性考虑,但是在需要提交文章等其他信息的时候,Html标记是必须的。
如果要解决这个问有如下几个办法:
一:修改配置文件(WebForm 、MVC通用)
<?xml version="1.0" ?>
<configuration>
<system.web>
<!--为pages节点增加属性-->
<pages validaterequest="false"/>
<!--增加验证模式描述(VS2010+)-->
<httpRuntime requestValidationMode="2.0" />
</system.web>
</configuration>
二:修改.aspx页面page节点(WebForm-推荐)
<%@ Page ValidateRequest="false" %>
三:修改Action描述(MVC-推荐)
[ValidateInput(false)]//关闭输入验证
public ActionResult Add()
{
return View();
}
其实,通过这些方式关闭了验证之后,服务器端是有被XSS跨站脚本攻击的危险的。
applet body embed frame script frameset html iframe
img style layer link ilayer meta object
这些html标签提交到服务器端之后都是有被攻击的危险的
所以关闭了验证之后,一定要在服务器端对提交的内容进行验证。这也是推荐使用方法二、方法三的原因
毕竟使用方法一的时候,每当有客户端输入内容的时候,服务器端就要进行危险标签的处理。
反而不如方法二、方法三方便。