2010-02-26 149 views
0

我的管理面板上有一個日誌功能,用於檢查用戶輸入是否正確,如果不正確,則將其寫入日誌文件。登錄時,該日誌文件被寫入到管理。XSS PHP日誌過濾器?

我在測試我的網站的安全漏洞,並且我設法利用XSS漏洞充分利用我的服務器。我試圖通過該功能檢查輸入來過濾記錄的輸入:

function isXSS($in){ 
    return preg_match("[<>(%[0-9a-fA-F]{2}+)]", $in) == 1; 
} 

但要麼paranoidly標記一切的憎惡XSS蠕蟲或忽略常見的XSS注射。我認爲問題是+量詞,但我聽說其他PHP正則表達式允許這樣做。

回答

2

出了什麼問題好老htmlspecialchars?我明白了爲什麼你可能想要追蹤潛在的惡意用戶,但是如果你投入精力來簡單地阻止安全漏洞,那麼真的沒有必要。

1

你試圖enumerate badness,這是你永遠不會贏的戰鬥。相反,你應該只通過你知道是好的標記允許,通過像htmlpurifier

還設有圖書館,我不知道有關{2}+語法,但我相信這是更接近你想要的東西:

"[<>(%[0-9a-fA-F]{2,})]"