1. 程式人生 > >Django-常見的web攻擊,及如何防止

Django-常見的web攻擊,及如何防止

一.sql注入攻擊及防範

1.危害

  • sql注入攻擊的危害:非法讀取、篡改、刪除資料庫中的資料
  • 盜取使用者的各種敏感資訊,獲取利益
  • 通過修改資料庫來修改網頁上的內容
  • 注入木馬
  • 等等

2.防範

  • django的orm查詢和form表單驗證都過濾了sql注入攻擊

3.漏洞原理

  • 若用原生的查詢方式,可以通過輸入單引號 1=1(如:‘OR 1=1#)等特殊字元使原生的SQL語句程式碼被改變。

4.防範原理

  • 轉義 單引號 1=1(如:‘OR 1=1#)等特殊字元

二.XSS(跨站指令碼攻擊)攻擊及防範

1.危害

  • 盜取各種使用者賬號,如使用者網銀賬號、各種管理員賬號
  • 盜取企業重要的具有商業價值的資料
  • 非法轉賬
  • 控制受害者機器向其他網站發起攻擊、注入木馬
  • 等等

2.防範

  • 表單驗證長度
  • 儘量採用POST而非GET提交表單
  • 避免直接在cookie中洩漏使用者隱私

3.漏洞原理

  • 網站地址後面會帶引數,如name='iphone6'
  • 黑客發現漏洞後,將name='iphone6'改為:name=<script>x=document.cookie;alert(x);</script>,將傳遞了js程式碼(這個程式碼看黑客怎麼寫)
  • 黑客裝作原網站給受害者傳送了一個帶有該js程式碼引數的網站連結
  • 黑客獲得cookie
  • 黑客就可以偽裝受害者獲取受害者的資訊。
  • 總結:漏洞就是後端中沒有過濾xss攻擊的程式碼欄位

4.防範原理

  • 首先程式碼裡對使用者輸入的地方和變數都需要仔細檢查長度和對  < , > , ; , ' 等字元做過濾。轉義特殊字元。
  • 避免直接在cookie中洩漏使用者隱私,例如email、密碼等等通過使cookie和系統ip繫結來降低cookie洩漏後的危險
  • 儘量採用POST而非GET提交表單

三.csrf(跨站請求偽造)攻擊及防範

1.危害

  • 以受害者的名義傳送郵件
  • 盜取受害者的賬號
  • 購買商品
  • 虛擬貨幣的轉賬

2.防範

  • 表單提交中新增{% csrf_token %}

3.漏洞原理

  • 黑客知道mybank網站的轉賬流程
  • 受害者在沒有登出A網站的情況下訪問黑客的網站
  • 黑客的網站有一個圖片,圖片的url地址是A網站的一個請求轉賬的url,如:<img src=http://www.mybank.com/Transfer/toBankId=11 & money=1000 >
  • 或者網站載入過程,js程式碼就默默的提交請求。
  • 受害者點選圖片就在不知情的情況下轉賬給了黑客1000塊錢

4.防範原理

  • 後端接收csrf_token值進行判斷