我在響應頭中直接傳遞用戶定義的參數。我學到的並不是一個好主意,因爲用戶可以操縱標題,並且可能導致跨站點腳本攻擊和其他多種攻擊。java中的響應頭驗證
https://www.fortify.com/vulncat/en/vulncat/python/header_manipulation.html
我在做什麼,以防止這是通過更換「\ r」和空字符串「\ n」個字符「」確認爲「HTTP響應拆分」的用戶輸入。這是足夠的還是我必須檢查其他角色也。任何指針都會有很大的幫助。
這是我的代碼。
if(response != null)
{
newResponse = response.replaceAll("[\r\n]", "");
}
這足以防止這種攻擊或我也應該驗證其他字符。
+1到白名單。指定*被允許的字符。不要以爲你對所有可能的攻擊媒介和利用方案有足夠的瞭解,以便你可以枚舉和禁止所有可能的惡意字符串/字符。總會有一個你沒有想到的,尤其是在unicode世界 - 甚至格式錯誤的unicode代碼點。 – Cheekysoft 2012-04-24 08:48:31
是白名單是好方法。我在響應中傳遞了一個文件名。 我已經改變了我的正則表達式。 if(response!= null) {newResponse = response.replaceAll(「[^ \\\ __a-zA-Z0-9-.//」,「」); } @artbristol感謝您的幫助。 – 2012-04-24 12:32:36