概述
validateRequest=false 是禁用了请求验证,同时他也就把一些安全的意识给去掉了,比如跨服务器脚本攻击(xss)。(建议不要这样做)
想要截获错误的信息给用户一个好的体验。
1 protected void Page_Error(object sender, EventArgs e) 2 { 3 Exception ex = Server.GetLastError(); 4 if (ex is HttpRequestValidationException) 5 { 6 Response.Write("请您输入合法字符串。"); 7 Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。 8 } 9 }
或者直接到
Application_Error()
里面去处理错误的回应
。
关于存在Rich Text Editor的页面应该如何处理?
如果页面有富文本编辑器的控件的,那么必然会导致有类的HTML标签提交回来。在这种情况下,我们不得不将validateRequest="false"。那么安全性怎么处理?如何在这种情况下最大限度的预防跨站脚本攻击呢?
根据微软的建议,我们应该采取安全上称为“默认禁止,显式允许”的策略。
首先,我们将输入字符串用 HttpUtility.HtmlEncode()来编码,将其中的HTML标签彻底禁止。
然后,我们再对我们所感兴趣的、并且是安全标签,通过Replace()进行替换。比如,我们希望有""标签,那么我们就将""显式的替换回""。
示例代码如下
1 以下是引用片段: 2 void submitBtn_Click(object sender, EventArgs e) 3 ...{ 4 // 将输入字符串编码,这样所有的HTML标签都失效了。 5 StringBuilder sb = new StringBuilder( 6 HttpUtility.HtmlEncode(htmlInputTxt.Text)); 7 // 然后我们选择性的允许<b> 和 <i> 8 sb.Replace("<b>", "<b>"); 9 sb.Replace("</b>", ""); 10 sb.Replace("<i>", "<i>"); 11 sb.Replace("</i>", ""); 12 Response.Write(sb.ToString()); 13 }
转载于:https://www.cnblogs.com/lihui1987/p/3158164.html
最后
以上就是虚心奇迹为你收集整理的@Page validateRequest=false的全部内容,希望文章能够帮你解决@Page validateRequest=false所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复