亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

請慎用ASP.Net的validateRequest="false"

2024-05-04 11:07:37
字體:
來源:轉載
供稿:網友

ASP.Net 1.1后引入了對提交表單自動檢查是否存在XSS(跨站腳本攻擊)的能力。當用戶試圖用之類的輸入影響頁面返回結果的時候,ASP.Net的引擎會引發一個 HttpRequestValidationExceptioin。默認情況下會返回如下文字的頁面:

 

 

  這是ASP.Net提供的一個很重要的安全特性。因為很多程序員對安全沒有概念,甚至都不知道XSS這種攻擊的存在,知道主動去防護的就更少了。ASP.Net在這一點上做到默認安全。這樣讓對安全不是很了解的程序員依舊可以寫出有一定安全防護能力的網站。

  但是,當我Google搜索 HttpRequestValidationException 或者 "A potentially dangerous Request.Form value was detected from the client"的時候,驚奇的發現大部分人給出的解決方案竟然是在ASP.Net頁面描述中通過設置 validateRequest=false 來禁用這個特性,而不去關心那個程序員的網站是否真的不需要這個特性。看得我這叫一個膽戰心驚。安全意識應該時時刻刻在每一個程序員的心里,不管你對安全的概念了解多少,一個主動的意識在腦子里,你的站點就會安全很多。

  為什么很多程序員想要禁止 validateRequest 呢?有一部分是真的需要用戶輸入"<>"之類的字符。這就不必說了。還有一部分其實并不是用戶允許輸入那些容易引起XSS的字符,而是討厭這種報錯的形式,畢竟一大段英文加上一個ASP.Net典型異常錯誤信息,顯得這個站點出錯了,而不是用戶輸入了非法的字符,可是自己又不知道怎么不讓它報錯,自己來處理報錯。

  對于希望很好的處理這個錯誤信息,而不使用默認ASP.Net異常報錯信息的程序員們,你們不要禁用validateRequest=false。

  正確的做法是在你當前頁面添加Page_Error()函數,來捕獲所有頁面處理過程中發生的而沒有處理的異常。然后給用戶一個合法的報錯信息。如果當前頁面沒有Page_Error(),這個異常將會送到Global.asax的Application_Error()來處理,你也可以在那里寫通用的異常報錯處理函數。如果兩個地方都沒有寫異常處理函數,才會顯示這個默認的報錯頁面呢。

 

  舉例而言,處理這個異常其實只需要很簡短的一小段代碼就夠了。在頁面的Code-behind頁面中加入這么一段代碼:

 

 

 

以下是引用片段:
protected void Page_Error(object sender, EventArgs e)
{
    Exception ex 
= Server.GetLastError();
    
if (ex is HttpRequestValidationException)
    
{
        Response.Write(
"請您輸入合法字符串。");
        Server.ClearError(); 
// 如果不ClearError()這個異常會繼續傳到Application_Error()。
    }

}

 

 

  這樣這個程序就可以截獲 HttpRequestValidationException 異常,而且可以按照程序員的意愿返回一個合理的報錯信息。

  這段代碼很簡單,所以我希望所有不是真的要允許用戶輸入之類字符的朋友,千萬不要隨意的禁止這個安全特性,如果只是需要異常處理,那么請用類似于上面的代碼來處理即可。

  而對于那些通過 明確禁止了這個特性的程序員,自己一定要明白自己在做什么,而且一定要自己手動的檢查必須過濾的字符串,否則你的站點很容易引發跨站腳本攻擊。

  關于存在Rich Text Editor的頁面應該如何處理?

  如果頁面有富文本編輯器的控件的,那么必然會導致有類的HTML標簽提交回來。在這種情況下,我們不得不將validateRequest="false"。那么安全性怎么處理?如何在這種情況下最大限度的預防跨站腳本攻擊呢?

  根據微軟的建議,我們應該采取安全上稱為“默認禁止,顯式允許”的策略。

  首先,我們將輸入字符串用 HttpUtility.HtmlEncode()來編碼,將其中的HTML標簽徹底禁止。

  然后,我們再對我們所感興趣的、并且是安全標簽,通過Replace()進行替換。比如,我們希望有""標簽,那么我們就將""顯式的替換回""。

  示例代碼如下:

 

 

以下是引用片段:
void submitBtn_Click(object sender, EventArgs e)
  ...{
    // 將輸入字符串編碼,這樣所有的HTML標簽都失效了。
    StringBuilder sb = new StringBuilder(
                            HttpUtility.HtmlEncode(htmlInputTxt.Text));
    // 然后我們選擇性的允許<b> 和 <i>
    sb.Replace("&lt;b&gt;", "<b>");
    sb.Replace("&lt;/b&gt;", "");
    sb.Replace("&lt;i&gt;", "<i>");
    sb.Replace("&lt;/i&gt;", "");
    Response.Write(sb.ToString());
  }

 

 

 

 

  這樣我們即允許了部分HTML標簽,又禁止了危險的標簽。

 

  根據微軟提供的建議,我們要慎重允許下列HTML標簽,因為這些HTML標簽都是有可能導致跨站腳本攻擊的。

 

 

以下是引用片段:
  • <applet>
  • <body>
  • <embed>
  • <frame>
  • <script>
  • <frameset>
  • <html>
  • <iframe>
  • <img>
  • <style>
  • <layer>
  • <link>
  • <ilayer>
  • <meta>
  • <object>

 

 

  可能這里最讓人不能理解的是<img>。但是,看過下列代碼后,就應該明白其危險性了。

 

 

以下是引用片段:
<img src="javascript:alert('hello');">
<img src="java&#010;script:alert('hello');">
<img src="java&#X0A;script:alert('hello');">

 

 

  通過<img>標簽是有可能導致Javascript執行的,這樣攻擊者就可以做他想偽裝的任何事情。

  關于<style>也是一樣:

 

 

以下是引用片段:
<style TYPE="text/javascript">...
  alert('hello');
</style>

 

 

以下是引用片段:
Server Error in '/YourApplicationPath' Application

A potentially dangerous Request.Form value was detected from the client
(txtName="<b>").


Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.

Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (txtName="<b>").

....

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩视频一区| 欧美一区二区三区精品电影| 蜜臀久久99精品久久久久久宅男| 国产成人高清激情视频在线观看| 亚洲国产另类久久精品| 91av网站在线播放| 欧美激情视频免费观看| 国产精品一区二区性色av| 欧美日韩午夜激情| 欧美综合在线第二页| 91精品国产91久久久久久不卡| 亚洲一区亚洲二区| 日本三级久久久| 欧美成人高清视频| 91免费国产视频| 欧美日韩亚洲91| 欧美区在线播放| 亚洲精品福利资源站| 亚洲精品久久7777777| 精品国产一区二区三区久久狼5月| 国产日韩在线观看av| 国产一区二区三区免费视频| 国产精品精品一区二区三区午夜版| 55夜色66夜色国产精品视频| 欧美成人免费播放| 91精品在线播放| 成人国产精品久久久久久亚洲| 成人精品视频久久久久| 日韩最新在线视频| 日韩精品免费在线观看| 亚洲成人精品视频| 亚洲欧美中文在线视频| 久久久91精品国产| 91在线高清视频| 亚洲高清久久久久久| 欧美大片免费观看| 91亚洲精品久久久| 亚洲精品国产精品久久清纯直播| 日韩精品视频免费| 精品国产一区二区三区久久久狼| 国产精品久久久久久一区二区| 国产91精品视频在线观看| 欧美黑人一区二区三区| 国产91精品不卡视频| 日韩专区在线播放| 日韩欧美黄色动漫| 日韩**中文字幕毛片| 久久久人成影片一区二区三区观看| 欧美国产第二页| 日韩av一区二区在线| 最近2019年中文视频免费在线观看| 北条麻妃一区二区在线观看| 欧美精品videossex88| 国产成人亚洲综合青青| 亚洲专区国产精品| 亚洲桃花岛网站| 日韩av观看网址| 亚洲国产欧美在线成人app| 亚洲欧美在线免费| 亚洲欧美日本伦理| 日韩在线视频国产| 国产欧美一区二区三区在线| 日韩精品视频在线观看免费| 91在线|亚洲| 97久久精品国产| 日韩欧美一区二区三区久久| 亚洲娇小xxxx欧美娇小| 中文字幕日韩专区| 18性欧美xxxⅹ性满足| 91极品视频在线| 欧美精品videosex性欧美| 午夜精品久久久久久久99黑人| 黑丝美女久久久| 欧美日韩黄色大片| 欧美在线观看视频| 日韩av在线免费看| 欧美精品成人在线| 日韩欧美中文第一页| 国产精品网站视频| 久国内精品在线| 疯狂欧美牲乱大交777| 亚洲天堂av综合网| 欧美成人午夜剧场免费观看| 伊人伊成久久人综合网站| 一区二区三区高清国产| 欧美精品video| 欧美性生交大片免网| 国产成人av在线播放| 亚洲电影成人av99爱色| 2020欧美日韩在线视频| 2019中文字幕全在线观看| 欧美www视频在线观看| 国产精品入口福利| 欧美天天综合色影久久精品| 欧美成aaa人片在线观看蜜臀| 少妇av一区二区三区| 九色91av视频| 成人精品久久一区二区三区| 亚洲va男人天堂| 亚洲国产美女精品久久久久∴| 国产日韩欧美中文在线播放| 日韩最新免费不卡| 亚洲黄页视频免费观看| 欧美亚洲一区在线| 欧美日韩国产123| 欧美一区亚洲一区| 青青草成人在线| 日韩在线视频一区| 在线播放亚洲激情| 亚洲va欧美va国产综合久久| 亚洲欧美成人网| 欧美日韩美女视频| 欧美老女人bb| 姬川优奈aav一区二区| 最近2019中文字幕大全第二页| 国内免费久久久久久久久久久| 久热99视频在线观看| 九九精品在线播放| 久久亚洲欧美日韩精品专区| 欧美黑人国产人伦爽爽爽| 狠狠色噜噜狠狠狠狠97| 国产欧美va欧美va香蕉在线| 欧美日韩免费一区| 久久久久久久91| 亚洲乱码av中文一区二区| 日韩在线视频中文字幕| 日韩av资源在线播放| 欧美中文在线观看| 久久久99免费视频| 一本色道久久综合狠狠躁篇的优点| 91精品中国老女人| 国产精品视频99| 亚洲国产欧美一区二区三区同亚洲| 国产精品永久免费| 精品国产区一区二区三区在线观看| 日韩欧美成人精品| 日本亚洲欧洲色α| 欧美成人h版在线观看| 69**夜色精品国产69乱| 欧美亚洲视频一区二区| 亚洲国产一区二区三区四区| 日韩电影免费在线观看中文字幕| 久久久99免费视频| 国产欧美日韩丝袜精品一区| 欧美激情欧美激情| 欧美性猛交xxxx免费看| 色综合视频一区中文字幕| 国产精品极品尤物在线观看| 日韩av免费在线看| 91sao在线观看国产| 永久免费毛片在线播放不卡| 国产成人短视频| 97人人爽人人喊人人模波多| 成人激情在线观看| 精品久久久久久国产| 欧美黑人一级爽快片淫片高清| 91av在线视频观看| 国产成人短视频| 欧美福利视频在线| 国产精品视频中文字幕91| 国产婷婷成人久久av免费高清| 国产美女主播一区| 成人a免费视频| 国产精品视频午夜|