2013-01-10 36 views
0

我有網站爲客戶帶有U/P登錄,因爲用戶名必須爲電子郵件地址我已經通過我們的錯誤日誌注意到,一些用戶不小心粘貼了他們的電子郵件格式IIS6無法獲取類型屬性; JS更換危險字符

<My Name> [email protected] 

進入pwd字段。我只注意到這一點,因爲.NET會由於其中的<而引發有關潛在危險的Request.Form的錯誤。我有一個JavaScript函數可以代替「<」和「<」(它不會導致錯誤之後的空格),我想將它應用到pwd - 反正它不正確,但至少它們會得到一個很好的「無效的密碼」信息,而不是一個關於危險角色的大的,醜陋的信息。當然,因爲它是一個密碼,所以我不能進行替換,除非我先將這個類型改爲文本。以下是我在javascript中嘗試的內容:

function replaceSuspectChars(that) 
{ 
    that.type = 'text'; 
    //Find '<' not followed by a space, and replace it with a '< ' 
    var text = that.value; 
    text = text.replace(/</g, "< "); 
    text = text.replace(/< /g, "< "); 
    that.value = text; 
    that.type = 'password'; 
} 

這對我的本地機器在IE中運行良好,運行IIS7。但在IIS6上的生產中,我收到錯誤「無法獲取類型屬性」。有沒有什麼辦法讓JavaScript來改變文本框的類型,或者能夠替換密碼字段中的違規字符,或者其他方式來避免危險的字符錯誤?我無法使用代碼隱藏代碼,因爲在執行回發代碼之前總是顯示危險字符錯誤。

感謝您的幫助。 -VG

回答

0

如果您想允許「<」,您可以在.aspx頁面的Page屬性中設置validateRequest="false"。這應該導致.net允許「<」。那麼你不會得到那個醜陋的死亡黃頁,讓你顯示你的錯誤信息。

儘管出於安全原因,我不確定您是否希望將validateRequest設置爲false,因爲這會阻止.Net檢查腳本注入攻擊。這是需要考慮的事情。

請參見:

  1. http://www.asp.net/whitepapers/request-validation
  2. Use of setting ValidateRequest to false in ASP
  3. Asp.Net Validaterequest False
+0

謝謝你,但不,我們不希望禁用的驗證。我不明白的是這個工程在IIS7的本地機器上很好。唯一不同的是生產是IIS6,我不明白爲什麼它不會在那裏工作。 –