安全 – 常見 Web 攻擊

前言

最近在研究 WAF, 順便記入一下常見的 Web 攻擊.

 

SQL Injection

SQL injection 是指程序員直接拿 client input, 拼接到 SQL query 中. 從而導致 client 有能力可以操作 SQL.

這個是年代久遠的攻擊了. 現在一般上都會使用 parameter 的方式把 client input 輸入進 query 裏, 而不是用拼接. 

或者直接用 ORM 框架. 跳過寫 query 這個環節.

不只是 SQL Injection, 任何一種 XXX injection 原理都是一樣的, 程序員對 client input 使用要敏感一些.

不要拿了就用, 要假設 client 都是壞人, 用他們給的東西要先檢查, 限制, 過濾. 

比如用 Enum, int, 正則去確保用戶只能給小範圍的表達, 使用的時候要依據場合做 encode. 

除了 SQL, 經常會用到 client input 做邏輯的還有 : Path, 反射調用, rich text 等等

 

Cross-site Scripting (XSS)

也算 injection 的一種, 它指的是用 client input 去拼接 HTML. 從而導致 client 有能力操作 HTML 頁面.

解決方法就是消毒. 限制. 過濾, Encode, 就那一套啦. 

 

Command Injection

也是 injection 的一種, 只是攻擊的地方是調用 shell 這類的, 所以叫 command injection. 

參考: 詳解php命令注入攻擊

解決方法一樣.

 

HTTP Request Smuggling

請求走私, 這個只會發生在, 有用 load balance, reverve proxy 反向代理, 這種情況. 

它會通過一些手法騙過代理, 讓它分發錯誤的信息給服務器. 

 

我沒有用過 load banlance 和反向代理, 所以也不清楚它具體怎樣 hack.

 

HTTP Response Splitting

參考: 

HTTP Response Splitting 攻擊

淺談HTTP響應拆分攻擊

它也有點像 injection, 服務器在處理 302 時把 client input 直接寫入 header location 裏, 導致了 client 有能力控制 response.

我沒有深入研究, 想了解更多看上面的鏈接吧. 解決方法還是一樣.

 

Remote File Inclusion

參考: 前端 RFI詳解

也算 injection 的一種, 直接用 client input 去拼接 file path.

 

其它

其餘的還有 HTTP 協議檢查, user-agent, accept headers, IIS configuration, protect 爬蟲, scanner 等等啦.

詳細的 rules 保護看這裏 Web Application Firewall CRS rule groups and rules

此外, 它還防 DDos attack

 

DDoS 和 CC Attack

參考: DDoS攻擊和CC攻擊有什麼區別?

DDoS 攻擊就是一直訪問你的服務器, 造成巨大的壓力, 讓服務器卡死掉. 阻止它的方法一般上是去檢查 IP, 放 cookie 做識別.

然後阻止它一直訪問. 自己防的話, 也是挺多工作要做的.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章