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


相关推荐

  • 粗糙集理论_简述粗糙集不确定性

    粗糙集理论_简述粗糙集不确定性粗糙集理论1粗糙集的基本概念在粗糙集理论中,我们把知识看做是一种能被用于分类对象的能力。其中对象可以代表现实世界中的任意事物,包括物品、属性、概念等。即:知识需要同现实世界中特定环境的确定对象相

    2022年8月4日
    14
  • 去噪自动编码器

    去噪自动编码器降噪自动编码器是一种用于图像去噪无监督的反馈神经网络原理如下图所示训练代码如下fromkeras.layersimportInput,Conv2D,MaxPooling2D,UpSampling2D,ZeroPadding2Dfromkeras.modelsimportModelfromkeras.callbacksimportTensorBoardfromkeras.datasetsimportmnistimportnumpyasnp(x_trai

    2022年6月1日
    37
  • Vue生成二维码_vue视频软件怎么生成二维码

    Vue生成二维码_vue视频软件怎么生成二维码1.在vue中安装qrcodejs2npminstall–saveqrcodejs22.在项目中引用qrcodejs2importQRcodefrom’qrcodejs2’3.使用到项目中<viewid=”qrCode”res=”qrCodeDiv”></view>methods:{bindQRcode(){ newQRcode(this.$refs.qrCodeDiv,{ text:”https://www..

    2022年10月3日
    3
  • 关闭端口命令[通俗易懂]

    关闭端口命令[通俗易懂]

    2022年7月20日
    13
  • 背包问题九讲笔记_01背包[通俗易懂]

    背包问题九讲笔记_01背包[通俗易懂]摘自TianyiCui童鞋的《背包问题九讲》,稍作修改,方便理解。01背包问题描述已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]。限制:每种物品只有一件,可以选择放或者不放问题:在不超过背包容量的情况下,最多能获得多少价值或收益相似问题:在恰好装满背包的情况下,最多能获得多少价值或收益这里,我们先讨论在不超过背包容量的情况

    2022年7月12日
    24
  • translate和paraphrase的区别_conversation dialogue

    translate和paraphrase的区别_conversation dialogueTranslateMessage(&msg);TranslateMessage是用来把快捷键消息转换为字符消息,并将转换后的新消息投递到调用线程的消息队列中。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。字符消息被投递到调用线程的消息队列中,当下一次调用GetMessage函数时被取出。…

    2025年11月8日
    3

发表回复

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

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