我是靠谱客的博主 虚心奇迹,最近开发中收集的这篇文章主要介绍@Page validateRequest=false,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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()
或者直接到 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("&lt;b&gt;", "<b>");
 9 sb.Replace("&lt;/b&gt;", "");
10 sb.Replace("&lt;i&gt;", "<i>");
11 sb.Replace("&lt;/i&gt;", "");
12 Response.Write(sb.ToString());
13 }
View Code

 

转载于:https://www.cnblogs.com/lihui1987/p/3158164.html

最后

以上就是虚心奇迹为你收集整理的@Page validateRequest=false的全部内容,希望文章能够帮你解决@Page validateRequest=false所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部