2012-10-04 20 views
0

這是一個在互聯網上的重要問題,但是,沒有簡單的答案。我知道我不會簡單地通過篩選來擺脫所有的XSS,但我想先從它開始。我目前正在使用用JScript編寫的服務器代碼(不是通常的VBScript)來開發ASP Classic項目。我們發現我們很容易受到一些XSS攻擊。一個人很難擺脫,因爲我不是一個JavaScript大師。當您使用類似下面的URL時,攻擊會成功。ASP經典過濾器「onmouseover」關鍵字xss

http://mysite/default.asp?NumVol=%20onmouseover=%22alert%28document.cookie%29%22%20style=%22font-size:999999999999px;%22%20href=

我試過的HTMLEncode,在NumVol參數字符串替換方法...但它仍然顯示該cookie。我正在尋找的只是一個小的替換方法,正則表達式或管理該特定情況的任何簡單的事情。

這是一箇舊的生產應用程序,他們不想花太多時間在它上面。只是一些安全基礎知識。我們絕對不會安裝依賴於.NET的庫(如OWASP)來解決這個問題,因爲我們很快就會用.NET重新構建應用程序。

EDIT

這裏是我嘗試了示例代碼。你可以看到我使用HTMLEncole加上一些「替換」的過濾器。 「%」字符在那裏,但它不起作用,因爲onmouseover被寫入。我需要的是JavaScript中的語法例子(正則表達式或someting),我可以在這種情況下應用。

var sPage = "" + Request.ServerVariables ("SCRIPT_NAME"); 
var NumVol = Request.QueryString("NumVol"); 
var comp = Request.QueryString("comp") 
var nav = Request.QueryString("nav"); 
var NoEle = Request.QueryString("NoEle"); 
var NoCons = Request.QueryString("NoCons"); 

if (Lg=="en") { 
    var pageSourceValid = Server.HTMLEncode(sPage + "?Lg=fr"); 
    Response.Write("<a href="); 
     if ((NumVol+"" != "undefined") && (NumVol+"" != "")) { 
      pageSourceValid += "&NumVol=" + NumVol.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
     } 
     if ((nav+"" != "undefined") && (nav+"" != "")) { 
      pageSourceValid += "&nav=" + nav.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,"") + ""; 
     } 
     if ((comp+"" != "undefined") && (comp+"" != "")) { 
      pageSourceValid += "&comp=" + comp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,"") + ""; 
     } 
     if ((NoEle+"" != "undefined") && (NoEle+"" != "")) { 
      pageSourceValid += "&NoEle=" + NoEle.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,"") + ""; 
     } 
     if ((NoCons+"" != "undefined") && (NoCons+"" != "")) { 
      pageSourceValid += "&NoCons=" + NoCons.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,"") + ""; 
     } 

Response.Write(Server.HTMLEncode(pageSourceValid)); 
Response.Write (" class=lienBanniere>"); 
Response.Write ("Français"); 
Response.Write ("</a>"); 

}

+1

您不顯示如何在頁面上顯示它。顯示導致問題的ASP JScript的一個片段將有所幫助。就像你正在嘗試HTMLEncode的部分和周圍的線一樣。 –

+0

我認爲你應該使用Http referer。如果是Jscript,那麼我不知道語法,但如果它是一個嚴重的腳本語言,那麼應該有一個HTTP引用檢查函數或類似的東西 – polin

回答