@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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 20多岁的一无所有,其实是理所应当的「建议收藏」

    20多岁的一无所有,其实是理所应当的「建议收藏」 转载:https://blog.csdn.net/kangwrite/article/details/3618481923岁那年你正处在哪个状态?现在呢?&amp;nbsp;我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。分享一下成长的建议吧。匿名用户23岁那年…

    2022年7月25日
    24
  • linux内核编程指南_linux内核源码详解

    linux内核编程指南_linux内核源码详解本章主要是as86与gas两种汇编语言的简要介绍,C语言与汇编语言的相互嵌套,目标文件的结构与及makefile文件的简要语法。  1,as86汇编的简要语法及命令可以参考http://blog.csdn.net/astraylinux/article/details/7301596  2,gas汇编与intel汇编的主要区别:(具体语法参考:http://blog.csdn.net/as

    2022年10月8日
    4
  • idea激活码2021 Mac【2021免费激活】

    (idea激活码2021 Mac)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    49
  • 学生个人网页制作html表格_用html制作学生成绩表

    学生个人网页制作html表格_用html制作学生成绩表HTML的嵌入式精美学生表格代码Contributor:国民老公45Type:代码Datetime:2019-11-0620:35:07Favorite:4Score:2返回上页Report请选择举报理由:AdvertisingPoliticallyPornographicGarbagearticleOtherCollectionModifythetypolegend{text-…

    2022年8月11日
    6
  • centos sqlite3安装及简单命令

    centos sqlite3安装及简单命令

    2021年7月18日
    77
  • Activity入门—Activity生命周期及三种状态+案例[通俗易懂]

    Activity入门—Activity生命周期及三种状态+案例[通俗易懂]生命周期就是一个对象从创建到销毁的过程,每个对象都有自己的生命周期。Activity生命周期分为三种状态。运行状态,停止状态,暂停状态。一.运行状态当activity在最前端时,它是可见的,有焦点的,可以用来处理用户的常见的操作。如:点击,双击,长按事件等。系统最不愿回收的就是出于此种状态的活动,这会带来非常差的用户体验。二.暂停状态activity依然可见,但它不再拥有焦点,即用户对它的操

    2022年8月16日
    5

发表回复

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

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