大家好,又见面了,我是你们的朋友全栈君。
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 }
View Code
转载于:https://www.cnblogs.com/lihui1987/p/3158164.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132778.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...