表單提交檢測(cè)到有潛在風(fēng)險(xiǎn)request.form值,該怎么應(yīng)對(duì)? |
發(fā)布時(shí)間:2022-10-03 文章來源:本站 瀏覽次數(shù):2323 |
網(wǎng)頁表單制作完成提交表單時(shí):從客戶端中檢測(cè)到有潛在風(fēng)險(xiǎn)的 request.form值,當(dāng)頁面修正或運(yùn)轉(zhuǎn)提交時(shí),呈現(xiàn)“從客戶端中檢測(cè)到有潛在風(fēng)險(xiǎn)的request.form值”問題,該怎么辦呢?今日小編就和我們講解下應(yīng)對(duì)辦法:
問題原因:由于在asp.net中,Request提交時(shí)呈現(xiàn)有html代碼或javascript等字符串時(shí),程序體系會(huì)以為其具有潛在風(fēng)險(xiǎn)的值。環(huán)境裝備會(huì)報(bào)出“從客戶端 中檢測(cè)到有潛在風(fēng)險(xiǎn)的Request.Form值”這樣的Error。
1、當(dāng)時(shí)提交頁面,添加代碼 翻開當(dāng)時(shí).aspx頁面,頁頭加上代碼:validateRequest=”false”,如:
《%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="false" CodeFile="default.aspx.cs" Inherits="default" %》2、大局修正web.config裝備文件(此舉不主張、不安全) 翻開web.config文件,在《system.web》《/system.web》中心,加上如下代碼:
《pages validateRequest="false" /》假如以上兩種辦法都無法解決,請(qǐng)接著往下看,
前面兩種辦法失效的原因:由于你當(dāng)時(shí)的.net ifreamwork結(jié)構(gòu)環(huán)境是4.0。由于4.0的驗(yàn)證在HTTP的BeginRequest前啟用,因此,請(qǐng)求的驗(yàn)證適用于一切ASP.NET資源,aspx頁面,ashx頁面,Web服務(wù)和一些HTTP處理程序等.
3、相同,翻開web.config裝備文件,在《system.web》《/system.web》中心,加上代碼:
《httpRuntime requestValidationMode="2.0" /》4、假如你的網(wǎng)站程序本身是net 2.0環(huán)境開發(fā)的,但放到了VS2010軟件里運(yùn)轉(zhuǎn),也會(huì)呈現(xiàn)這種狀況,你能夠把運(yùn)轉(zhuǎn)解決方案切換成net2.0即可,更換辦法詳見頁面第3步:點(diǎn)擊進(jìn)入
5、另一種處理辦法:原因是所傳值含有特別風(fēng)險(xiǎn)符號(hào),那么能夠在傳前,利用Server.HtmlEncode(string)辦法,對(duì)字符串進(jìn)行編碼,這樣就會(huì)將風(fēng)險(xiǎn)字符轉(zhuǎn)義為一般的字符。如TextBox1.Text=Server.HtmlEncode(str); |
|