从客户端中检测到有潜在风险的Request.Form值的处理方法
一些用户在运用ASP.NET作为网站开发言语时,会呈现这样一个问题。用户提交表单宣布内容时,页面提示:应用程序中的服务器过错,从客户端(某某代码)中检测到有潜在风险的Request.Form值。
原因剖析
呈现这种过错的原因是微软.NET结构中的Request Validation(恳求验证)在起作用。恳求验证是ASP.NET的一个很有用的功用,能够自动检测网页文件中是否含有歹意脚本。一般屏蔽的是HTML代码,如<>或Javascript脚本,由于这些脚本会被黑客使用,植入到您的网页中,然后影响今后的拜访者。这种进犯行为也被称为XSS(cross site scripting),即跨站脚本进犯。
怎么处理
由于朝暮数据的悉数服务器都选用ASP.NET 4.5结构,如果您的网站是根据.NET2.0/3.5开发的,或许就会碰到这个问题。您能够挑选整站禁用恳求验证功用,或许只挑选部分页面禁用。
1、在根目录下的web.config文件中,增加如下代码:
<system.web> <httpRuntime requestValidationMode="2.0" /> </system.web>2、如果您期望整站禁用,再进一步增加:
<system.web> <pages validateRequest="false" /> </system.web>3、恳求验证功用是为了避免黑客脚本进犯,因而不引荐整站禁用。如果您仅仅部分页面有增加HTML的需求,也能够只禁用这些页面。咱们在这些页面的头部增加:
<@ Page validateRequest="false" %>安全提示
如果您禁用了恳求验证功用,请一定要人工验证用户的输入是否含有歹意脚本。除非您只禁用了部分页面,并且这些页面坐落后台,只能管理员拜访,黑客无法拜访到。
一个简略的人工验证方法是选用在线编辑器,如百度的UEditor,CKEditor等,这些编辑器自身就能阻挠不合法脚本,只允许安全的HTML或Javascript。