當今天網站不小心被發現有 XSS 漏洞時,攻擊者很可能會透過 javascript 盜取你的 cookie 中的 session id,來盜取帳號。
在 http(s) header 中其中有一個 header 為 Set-Cookie,將 Set-Cookie 設為 httpOnly(javascript 無法存取cookie)或 secure (http 連線無法存取 cookie)
並且各瀏覽器都支援此 header
- 我們可以簡單的透過 phpini 設定,Set-Cookie: HttpOnly _vim /etc/php5/apache2/php.in
session.cookie_httponly = true 但這樣設定僅會設定到 Set-Cookie: HttpOnly(僅阻止 javascript 直接存取 cookie)
- 透過 apache2 設定 header (apahce 版本資訊, 可透過指令 sudo apache2 -v 得知) vim /etc/apache2/conf-available/security.conf 若是 apache 版本 >=2.2.4
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure 若是 apache 版本 < 2.2.4 Header set Set-Cookie HttpOnly;Secure _sudo service apache2 restart # 重啟 apache 載入設定 _這樣就可以避免 javascript 與不安全的 http 連線存取 cookie
設定完後,可以利用這個線上工具檢查是否有正確設定到 Set-Cookie 欄位
雖說這個 header 可以某種程度的保護使用者免於程式碼存取 cookie,但 XSS 仍可以利用使用者身分做一些特定權限操作。
最根本還是要避免 XSS 的攻擊漏洞阿~
參考資料:
http://blog.miniasp.com/post/2009/11/26/Using-HttpOnly-flag-to-avoid-XSS-attack.aspx
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
https://doc.nuxeo.com/nxdoc/http-and-https-reverse-proxy-configuration/