這是一個在互聯網上的重要問題,但是,沒有簡單的答案。我知道我不會簡單地通過篩選來擺脫所有的XSS,但我想先從它開始。我目前正在使用用JScript編寫的服務器代碼(不是通常的VBScript)來開發ASP Classic項目。我們發現我們很容易受到一些XSS攻擊。一個人很難擺脫,因爲我不是一個JavaScript大師。當您使用類似下面的URL時,攻擊會成功。ASP經典過濾器「onmouseover」關鍵字xss
我試過的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>");
}
您不顯示如何在頁面上顯示它。顯示導致問題的ASP JScript的一個片段將有所幫助。就像你正在嘗試HTMLEncode的部分和周圍的線一樣。 –
我認爲你應該使用Http referer。如果是Jscript,那麼我不知道語法,但如果它是一個嚴重的腳本語言,那麼應該有一個HTTP引用檢查函數或類似的東西 – polin