android 访问服务器sql_XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全
今天看了 jsliang 大佬關于網絡安全的文章,為了加深一下印象,自己動手寫一下。
主要參考文章:網絡安全 ——— jsliang
XSS攻擊
XSS(Cross Site Script)跨站腳本攻擊,指的是向網頁注入惡意代碼,并對網頁進行篡改。在用戶瀏覽時,從而獲取用戶隱私數據的一種攻擊方式。一般為 JavaScript 。
- 竊取 Cookie 信息,模擬用戶進行登錄,然后進行轉賬等操作
- 使用 addEventListener 監聽用戶行為,監聽鍵盤事件,竊取用戶的銀行卡密碼等。并發送到攻擊者的服務器
- 通過修改 DOM 偽造假的登錄窗口,欺騙用戶輸入用戶名和密碼等
- 生成浮窗廣告等
- 修改 URL 跳轉到惡意網站
- ....
防御 :
- 輸入檢查:對輸入內容中的 script 和 iframe 等標簽進行轉義或者過濾
- 設置 httpOnly(后端): 設置此屬性可防止 JavaScript 獲取 Cookie, 只能在 HTTP請求過程中使用 Cookie
- 開啟 CSP 白名單 :即開啟白名單,可以阻止白名單意外的資源加載和運行 (參考:web安全csp白名單的弊端、開啟CSP網頁安全政策防止XSS攻擊)
CSRF攻擊
CSRF(Cross—Site Request Forgery) 跨站請求偽造。簡單說一下自己的理解,不對的地方請指正。CSRF攻擊主要是利用用戶登陸過的網站生成的Cookie,也就是這個用戶的憑證,操控用戶,進行轉賬等有利于攻擊者的行為。但并不是像XSS攻擊一樣竊取Cookie,攻擊者不知道Cookie的內容,只是利用而已。 例子: 網站A為用戶正常瀏覽的網站,網站B為攻擊者的惡意網站。假設用戶已經登錄網站A獲取到了Cookie,這時候用戶打開網站B,這時候網站B運行惡意代碼,請求訪問網站A或者說網站A某個api(例如網站A的轉賬api),通常是在用戶不知情的情況下。
防御:
- 驗證 Token:瀏覽器請求服務器時,服務器返回一個 token,之后每個請求都需要同時帶上 token 和 Cookie 才會被認為是合法請求
- 驗證 Referer:通過驗證請求頭的 Referer 來驗證來源站點,但請求頭很容易偽造
- 設置 SameSite:設置 Cookie 的 SameSite,可以讓 Cookie 不隨跨站請求發出,但瀏覽器兼容不一
具體實現和原理參考:CSRF攻擊與防御
SQL注入
主要是通過往輸入框里面輸入 SQL語句,利用 SQL的語法識別機制,從而修改數據庫實際上運行的SQL語句,以達到攻擊者的目的
例如: (假設前端沒有做用戶名和密碼的校驗) 用戶輸入的用戶名:Kite OR '1 = 1'-- 用戶輸入的密碼:123456
預想執行的SQL語句:SELECT * FROM user WHERE username='Kite' AND psw='123456'
實際執行的SQL語句:SELECT * FROM user WHERE username='Kite' OR 1 = 1 --' AND psw='xxxx'
"--":是SQL的注釋代碼。也就是說 1 = 1 后面的代碼無效。 結果就變成無論輸入的用戶名和密碼是否正確,都可以登錄。因為 1 = 1 肯定是為 true 。
防御:
- 通過正則驗證用戶輸入的內容是否包含引起隱患的字符
- 一般由后端來處理。
流量劫持
DNS 劫持
建過站點的朋友應該都知道,需要域名解析,不然無法通過自己購買的域名訪問自己的服務器。域名解析,也就是通過 DNS 服務器實現域名和服務器IP的映射,例如 http://kite1874.com 對應的 IP 為 127.0.0.1。你訪問 http://kite1874.com 的時候,實際訪問的是 127.0.0.1 這個IP地址對應的服務器。實際上輸入 127.0.0.1 也可以正常訪問站點。之所以需要使用域名進行訪問,是為了方便記憶和SEO
DNS劫持,也就是通過篡改域名映射的IP,導致用戶訪問的網站,變成攻擊者準備的惡意網站。
例如:
- 篡改路由器 DNS 配置。
- 篡改 Hosts 文件貌似也可以做到(自己腦補的)
- 網絡供應商可以修改,如果有意這樣做的話。
- ...
HTTP 劫持
大家都知道,HTTP 請求是明文的。而 HTTP 劫持主要是篡改請求的內容。例如:你打開一個網頁,請求返回一個HTML文件,然后有意者修改這個HTML,往里面插了個小廣告,然后再返回給你。廣告還算小事,要是返回一個表單讓你輸入賬號密碼呢?你全然不知,還以為這是原來網站上的表單呢
防御:
- HTTP 傳輸是明文,所以需要給它加密。也就是 HTTPS 協議。需要申請 SSL 證書。
來自阿怪自己的博客 —— XSS攻擊、CSRF攻擊、SQL注入、流量劫持(DNS劫持、HTTP劫持)—— 瀏覽器安全 - 阿怪的小破站
總結
以上是生活随笔為你收集整理的android 访问服务器sql_XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 获取文件列表_Python
- 下一篇: elementui table渲染不出来