网络安全详细讲解
什么是 XSS?如何預防?
XSS 全稱是 Cross Site Scripting ,為了與CSS區分開來,故簡稱 XSS,翻譯過來就是“跨站腳本”。
XSS是指黑客往 HTML 文件中或者 DOM 中注入惡意腳本,從而在用戶瀏覽頁面時利用注入的惡意腳本對用戶實施攻擊的一種手段。
最開始的時候,這種攻擊是通過跨域來實現的,所以叫“跨域腳本”。發展到現在,往HTML文件中中插入惡意代碼方式越來越多,所以是否跨域注入腳本已經不是唯一的注入手段了,但是 XSS 這個名字卻一直保留至今。
注入惡意腳本可以完成這些事情:
竊取Cookie
監聽用戶行為,比如輸入賬號密碼后之間發給黑客服務器
在網頁中生成浮窗廣告
修改DOM偽造登入表單
一般的情況下,XSS攻擊有三種實現方式
存儲型 XSS 攻擊
反射型 XSS 攻擊
基于 DOM 的 XSS 攻擊
- 存儲型 XSS 攻擊
存儲型 XSS 攻擊大致步驟如下:
首先黑客利用站點漏洞將一段惡意 JavaScript 代碼提交到網站的數據庫中;
然后用戶向網站請求包含了惡意 JavaScript 腳本的頁面;
當用戶瀏覽該頁面的時候,惡意腳本就會將用戶的 Cookie 信息等數據上傳到服務器。
比如常見的場景:
在評論區提交一份腳本代碼,假設前后端沒有做好轉義工作,那內容上傳到服務器,在頁面渲染的時候就會直接執行,相當于執行一段未知的JS代碼。這就是存儲型 XSS 攻擊。
- 反射型 XSS 攻擊
反射型 XSS 攻擊指的就是惡意腳本作為「網絡請求的一部分」,隨后網站又把惡意的JavaScript腳本返回給用戶,當惡意 JavaScript 腳本在用戶頁面中被執行時,黑客就可以利用該腳本做一些惡意操作。
舉個例子:
http://TianTianUp.com?query=<script>alert("你受到了XSS攻擊")</script>服務器拿到后解析參數query,最后將內容返回給瀏覽器,瀏覽器將這些內容作為HTML的一部分解析,發現是Javascript腳本,直接執行,這樣子被XSS攻擊了。
這也就是反射型名字的由來,將惡意腳本作為參數,通過網絡請求,最后經過服務器,在反射到HTML文檔中,執行解析。
主要注意的就是,「服務器不會存儲這些惡意的腳本,這也算是和存儲型XSS攻擊的區別吧」。
- 基于 DOM 的 XSS 攻擊
基于 DOM 的 XSS 攻擊是不牽涉到頁面 Web 服務器的。具體來講,黑客通過各種手段將惡意腳本注入用戶的頁面中,在數據傳輸的時候劫持網絡數據包
常見的劫持手段有:
WIFI路由器劫持
本地惡意軟件
XSS 攻擊是指瀏覽器中執行惡意腳本, 然后拿到用戶的信息進行操作。主要分為存儲型、反射型和文檔型。防范的措施包括:
對輸入內容過濾或者轉碼,尤其是類似于script、img、a標簽
利用CSP
利用Cookie的HttpOnly屬性
什么是 CSRF?如何預防?
CSRF 英文全稱是 Cross-site request forgery,所以又稱為“跨站請求偽造”,是指黑客引誘用戶打開黑客的網站,在黑客的網站中,利用用戶的登錄狀態發起的跨站請求。簡單來講,CSRF 攻擊就是黑客利用了用戶的登錄狀態,并通過第三方的站點來做一些壞事。
一般的情況下,點開一個誘導你的鏈接,黑客會在你不知情的時候做哪些事情呢
- 自動發起 Get 請求
在受害者訪問含有這個img的頁面后,瀏覽器會自動向http://bank.example/withdraw?account=xiaoming&amount=10000&for=hacker發出一次HTTP請求。
bank.example就會收到包含受害者登錄信息的一次跨域請求。
- 自動發起 POST 請求
訪問該頁面后,表單會自動提交,相當于模擬用戶完成了一次POST操作。
同樣也會攜帶相應的用戶 cookie 信息,讓服務器誤以為是一個正常的用戶在操作,讓各種惡意的操作變為可能。
CSRF攻擊原理,跟XSS對比的話,CSRF攻擊并不需要將惡意代碼注入HTML中,而是跳轉新的頁面,利用服務器的驗證漏洞和用戶之前的登錄狀態來模擬用戶進行操作。
CSRF(Cross-site request forgery), 即跨站請求偽造,本質是沖著瀏覽器分不清發起請求是不是真正的用戶本人,所以防范的關鍵在于在請求中放入黑客所不能偽造的信息。從而防止黑客偽造一個完整的請求欺騙服務器。
防范措施:
驗證碼機制,驗證來源站點,利用Cookie的SameSite屬性,CSRF Token
總結
- 上一篇: 细说中国各省省名的由来(zt)
- 下一篇: 倍福触摸屏维修操作面板维修CP7032-