您將需要驗證來自getCookieValue的數據。如果您期待一個號碼,請確保返回的值是數字。同時確保任何轉義字符(例如,脫離您的javascript的引號)不在該字段中。對此的修復如下所示:
function is_valid(value) {
// Do some check here depending on what you're expecting.
// I also recommend escaping any quotes (i.e. " becomes \")
// Ideally, you'd just whitelist what is acceptable input (A-Z0-9 or whatever,
// and return false from this function if something else is present in
// value!)
}
var cookie_value = getCookieValue('fieldval');
if(is_valid(cookie_value)) {
document.write('<input type="hidden name="field1" value="' + cookie_value + '" />');
}
長話短說,在document.write之前清理數據,或者最終得到反映的XSS。
正如上面評論中提到的,源自用戶自己的cookies(他們修改自己的東西)的XSS並不特別令人擔憂。但是,無論哪種編碼實踐導致這種情況都可能出現在別處。我建議您查看您的來源,並確保全部用戶輸入被視爲不可信任和適當消毒。
不知道是否這是問題,但是,您需要花費引號和雙引號。 – Toping
任何人如何將惡意代碼注入您的Cookie?當然,逃避它並不壞。 – Bergi
@Bergi我想用戶剛剛在瀏覽器中編輯了cookies。我不確定這會如何影響其他用戶,所以我不認爲它在事物的宏偉計劃中造成太多問題。但是,無論哪種編碼習慣導致這種XSS,都可能出現在其他地方。 – Julio