「每日一題」XSS 是什麼?
請用自己的語言簡述:
- XSS 是什麼(舉例說明)
- 如何防治 XSS
---------
XSS 是什麼?
是英文 Cross-Site Scripting 的縮寫。
簡單來說1. 正常用戶 A 提交正常內容,顯示在另一個用戶 B 的網頁上,沒有問題。
2. 惡意用戶 H 提交惡意內容,顯示在另一個用戶 B 的網頁上,對 B 的網頁隨意篡改。
造成 XSS 有幾個要點:
1. 惡意用戶可以提交內容
2. 提交的內容可以顯示在另一個用戶的頁面上
3. 這些內容未經過濾,直接運行在另一個用戶的頁面上
舉例說明
假設我們有一個評論系統。
用戶 A 提交評論「小谷你好」到伺服器,然後用戶 B 來訪問網站,看到了 A 的評論「小谷你好」,這裡沒有 XSS。
惡意用戶 H 提交評論「<script>console.log(document.cookie)</script>」,然後用戶 B 來訪問網站,這段腳本在 B 的瀏覽器直接執行,惡意用戶 H 的腳本就可以任意操作 B 的 cookie,而 B 對此毫無察覺。有了 cookie,惡意用戶 H 就可以偽造 B 的登錄信息,隨意訪問 B 的隱私了。而 B 始終被蒙在鼓裡。
XSS 的成因以及如何避免
繼續上面例子,之所以惡意腳本能直接執行,有兩個可能
1. 後台模板問題
<p>n評論內容:<?php echo $content; ?>n</p>n
$content 的內容,沒有經過任何過濾,原樣輸出。
要解決這個原因,只需要後台輸出的時候,將可疑的符號 < 符號變成 &lt; (HTML實體)就行。
2. 前端代碼問題
$p.html(content)n
或者
$p = $(<p>+ content +</p>)n
content 內容又被原樣輸出了。解決辦法就是不要自己拼 HTML,盡量使用 text 方法。如果一定要使用 HTML,就把可疑符號變成 HTML 實體。
示例代碼
以上,就是 XSS 的簡單介紹。
更多前端知識,盡在前端交流 4 群:392054247
推薦閱讀:
※了解黑客:這是黑客思維
※XSS常見攻擊與防禦
※記一次沒什麼技術含量的XSS注入
※XSS學習之以關點面 11~15關
TAG:XSS |