2011-07-18 47 views
1

我的項目實現搜索(從默認HTML頁面),並將重定向到搜索頁面(ASPX頁面),我使用查詢字符串來傳遞搜索值。當語言設置爲非英語時(例如泰語,西里爾語),我得到potentially dangerous Request.QueryString value服務器錯誤。處理潛在危險查詢字符串

有什麼辦法可以從客戶端處理這個問題嗎?目前我無法找到一種方法來處理頁面本身(Page_Load,Page_PreInit未觸發)。

這是我用來重定向代碼:

function Search() { 
    var searchString = document.getElementById('txtSearch').value; 
    location.href = "/Search.aspx?search=" + searchString; 
} 
+0

您是否嘗試過加密你的查詢字符串和解密上重定向頁面? – TheGeekYouNeed

+0

還沒有,我發佈我的代碼重定向搜索頁面。 – KaeL

回答

2

添加validateRequest="false"到您的.Net頁或Web.config文件

OR

你可以編碼您的網址增值經銷商,加入encodeURIComponent

function Search() { 
    var searchString = document.getElementById('txtSearch').value; 
    location.href = "/Search.aspx?search=" + encodeURIComponent(searchString); 
} 
+0

感謝您的回答Marc – KaeL

2

如果你的數據將大致如下代碼,您可能需要禁用此驗證;但那麼你需要確保確保你的代碼處理,特別是避免XSS和SQL注入攻擊。你應該能夠在ASPX validateRequest=false設置爲禁用在每個頁面的基礎:

<%@ Page validateRequest="false" ... 
在web.config

或全球範圍內,如果你需要這種無處不在。

+0

謝謝,我試過這個屬性,它的工作。是否可以從代碼隱藏中設置這個值?假設我已驗證了請求並且它是有效的,我不想將「ValidateRequest」設置爲true,以避免任何攻擊。 – KaeL