3
在this頁它說什麼是危險的約呼應SID
的
htmlspecialchars()
可能爲了防止XSS相關的攻擊打印SID時使用。
如果您不使用htmlspecialchars()
而打印SID,某人可能發生什麼樣的攻擊?
會話ID只能包含數字和字母。我錯過了什麼嗎?
在this頁它說什麼是危險的約呼應SID
的
htmlspecialchars()
可能爲了防止XSS相關的攻擊打印SID時使用。
如果您不使用htmlspecialchars()
而打印SID,某人可能發生什麼樣的攻擊?
會話ID只能包含數字和字母。我錯過了什麼嗎?
會話ID通常存儲在客戶端,因此它可以被改變(例如,在餅乾或GET
PARAMS) - 一些腳本,甚至通過改變URL。
現在想象有人能夠更改cookie並將SID
更改爲某些JS代碼將您重定向到其他某個地方。如果您將在未翻轉的頁面上打印該值,則每次都將重定向用戶,除非他將清除Cookie或禁用JavaScript。
換句話說,會話ID取自客戶端並且是不安全的(除非您將使用其他機制確保它未被更改(例如包含在某些PHP框架中的cookie簽名),所以您不能相信它不包含有害東西。
這與構建SQL查詢時不得將此值用作安全的原因相同(因此SID也是SQL注入的可能位置)。
攻擊者如何能夠在別人的機器上更改它? – qwertymk
通過將其置於URL:'yoursite.com/?PHPSESSID= '。你可以通過在你的php.ini文件中設置session.use_trans_sid = 0 session.use_only_cookies = 1'來禁用這個功能 –
@qwertymk:對於同一個域,Cookies是相同的,所以控制其中一個頁面XSS)就足夠了。一個頁面易受攻擊,如果您在其他地方顯示SID,其他頁面也會受到影響(一個頁面會在Cookie中設置SID,其他頁面會顯示該頁面)。或者,如果來自URL的SID(如果在cookie中覆蓋SID,即使在使用沒有SID的URL的情況下也會導致問題發生)。 – Tadeck