@Page validateRequest=false「建议收藏」

@Page validateRequest=false「建议收藏」validateRequest=false是禁用了请求验证,同时他也就把一些安全的意识给去掉了,比如跨服务器脚本攻击(xss)。(建议不要这样做)想要截获错误的信息给用户一个好的体验。1protectedvoidPage_Error(objectsender,EventArgse)2{3Exceptionex=Server.GetLastE…

大家好,又见面了,我是你们的朋友全栈君。

validateRequest=false 是禁用了请求验证,同时他也就把一些安全的意识给去掉了,比如跨服务器脚本攻击(xss)。(建议不要这样做)
 
想要截获错误的信息给用户一个好的体验。
@Page validateRequest=false「建议收藏」
@Page validateRequest=false「建议收藏」

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()进行替换。比如,我们希望有””标签,那么我们就将””显式的替换回””。

  示例代码如下

  

@Page validateRequest=false「建议收藏」
@Page validateRequest=false「建议收藏」

 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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132778.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 匿名函数调用方法_javascript匿名函数

    匿名函数调用方法_javascript匿名函数首先看一下普通函数和匿名函数的区别//普通函数functionsum(a,b){ returna+b; console.log(“我是一个普通函数”) }//匿名函数,不能单独使用function(a,b){ returna+b; console.log(“我是一个匿名函数”) }没错,匿名函数简单来说就是普通函数去掉名字,但是他不能单独定义与使用,下面是匿名函数的一些使用场景:用于函数表达式、作为返回值、用于定义对象方法、作为回调函数、用于立即执行函数、用于DOM元素注

    2022年10月3日
    0
  • c获取网卡序列号_win10查看序列号命令

    c获取网卡序列号_win10查看序列号命令privatevoidbutton1_Click(objectsender,EventArgse){textBox1.Text=””;foreach(stringsinlistBox1.SelectedItems){ManagementObjectSearchersearche…

    2022年10月2日
    0
  • python win32api messagebox_如何在Python中使用Win32 API?

    python win32api messagebox_如何在Python中使用Win32 API?PyWin32是必经之路-但是如何使用它呢?一种方法是从遇到的具体问题开始并尝试解决它。PyWin32提供了许多Win32API函数的绑定,您确实必须首先选择一个特定的目标。在我的Python2.5安装中(在Windows上为ActiveState),win32软件包具有一个Demos文件夹,其中包含该库各个部分的示例代码。例如,这是CopyFileEx.py:importwin32file…

    2022年8月31日
    1
  • sql server2008 r2 密钥

    sql server2008 r2 密钥sqlserver2008r2密钥Developer:PTTFM-X467G-P7RH2-3Q6CG-4DMYBEnterprise:JD8Y6-HQG69-P9H84-XDTPG-34MB

    2022年7月4日
    22
  • 100——第17例[通俗易懂]

    100——第17例[通俗易懂]100——第17例

    2022年4月22日
    36
  • 用excel求逆矩阵只出现一个数字_求逆矩阵的方法公式

    用excel求逆矩阵只出现一个数字_求逆矩阵的方法公式 因为在YUV与RGB互相转换的时候用到了矩阵运算,当时正好需要求逆矩阵,而手头上没有matlab,所以只能考虑excel了。终于让我找到了方法,共享之:1)先将矩阵的数据输入,然后将所输入的数据选中(注意:只能是N*N的矩阵),然后点击插入-名称-定义,给这个矩阵取个名字MatrixA,然后点击确定。2)再选择N*N个格,在上面的输入框内写入“=MINVERSE(MatrixA)”,

    2022年8月21日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号