web前后端分離漏洞分析防御


web前后端分離漏洞分析防御

漏洞分析,主要漏洞有

一、跨站腳本攻擊XSS

  程序 + 數據 = 結果;攻擊后,數據夾雜一部分程序(執行代碼),導致結果改變;

1、XSS攻擊注入點

(a):HTML節點內容;例如:評論的時候帶上腳本
(b):HTML屬性
       <img src="#{image}" />
       <img src="1" onerror="alert('2')" />
(c):javascript代碼
       var data = "#{data}";
       var data = "hello";alert(1);"";

2、XSS攻擊防御

(a):瀏覽器自帶的防御,這個在后台去開啟,不過只能防御,在HTML中和HTML屬性中的XSS攻擊;

(b):顯示到前台數據轉義;例如腳本攻擊,我們只需要將 < 和 > 以及 " 轉義為代碼的左右括號以及雙引號,這樣代碼就不會執行;有兩個方向

  1、用戶輸入提交的時候;

  2、顯示的時候

  顯示的時候轉義,后端把代碼左右尖括號替換即可,也就是說用戶代碼不會被執行,只會輸入什么顯示什么,即便是script 標簽也只會展示出來;(轉義的是要顯

示在前台的數據)

var escapeHtml = function(str) {
       if(!str) return '';
       str = str.replace(/</g, '&lt;');        // 轉義替換 <
       str = str.replace(/>/g, '&gt;');        // 轉義替換 >
       str = str.replace(/"/g, '&quto;');      // 轉義替換 "
       str = str.replace(/'/g, '&#39;');       // 轉義替換 '
       str = str.replace(/ /g, '&#32;');       // 轉義替換 空格
       return str;
}

 

(c):富文本的處理:

  1、黑名單模式,吧不對的標簽過濾掉;例如:script 去掉;這種需要操作的太多,規則太多了;

  2、白名單過濾,只允許特定的;保留部分標簽和屬性;

  XSS共計的主要防御就是轉義、替換;

3、CSP 內容安全策略

    用於指定哪些內容可以執行;(例如:用戶輸入的部分變為不可執行,此時即使里面有腳本,也不會執行); CSP主要是在頭部Header添加的;

 

 

二、跨站請求偽造攻擊CSRF

  CSRF在其他的網站對目標網站發出了一些請求;XSS是在本網站運行了一些其他的請求;這是兩者的區別;

  get共計更簡單,Img 標簽src為這個攻擊連接(訪問接口或者其他),網頁打開img加載就執行了;

1、CSRF攻擊原理:

 

a網站用戶登錄,向a的后台發送登錄,后台發送相應的信息返回給a的前台,包括cookie等信息,用戶在B網站訪問的時候,訪問了a的一個接

口,這個時候b進行的是訪問a的后台,所以同樣帶了相應的用戶信息,這個時候用戶就不知情的情況下執行了某個操作(並且帶的自己的信息);

2、CSRF攻擊危害:

  (a): 利用用戶登錄態; 例如:盜取用戶資金(轉賬、消費)

  (b): 用戶不知情; 例如:冒充用戶發帖背鍋

  (c):完成業務請求;

  (d):損害公司域名;

3、CSRF攻擊防御:

 

  (a): 禁止第三方網站帶Cookies;

    例如:Cookies新增的屬性 same-site 屬性,也就是相同的網站才能帶上;這個方法兼容性不好,目前基本只有谷歌和opeor支持;

  (b): 思路:共計是從其他網站訪問我們后台造成的,所以防御思路為必須從a網站走,不訪問A的前端接口不讓成功;

    1、可以通過驗證碼,接口提交必須要驗證碼;

    2、接口添加token;這樣第三方,不知道驗證碼、token就無法在執行訪問接口;頁面中后台傳一個token,提交的時候加上這個;

  (c):第三方的網站共計 referer 為第三方網站;

if(!/^https?:\/\/localhost/.test(referer)){
       console.log('非法請求');
}

  后台添加判斷,如果referer不包含我們的網站域名,便拋出錯誤非法請求;

 

三、前端Cookies安全性

1、XSS和Cookies的關系

  (a)、XSS可能偷取Cookies;防止 http-only的Cookies不會被偷

2、CSRF和Cookies的關系 

  (a)、CSRF利用了用戶的Cookies;防御 不讓第三方讀寫Cookies,或者 組織第三方使用Cookies(same-site )

3、Cookies的安全策略

  (a):簽名防篡改

  (b):私有變化(加密),吧信息隱藏起來或者給到前台的數據用戶是看不懂的,但是后台經過處理可以看懂;

  (c):http-only使Cookies私有化

  (d):secure

  (e):Cookies(same-site )

 

四、點擊劫持攻擊

原理:通過iframe將目標網站加載過來,透明度設置為零,所以用戶看到的是想讓你看到的,但實際操作的是攻擊的網站;

特征:

  1、用戶親手操作

  2、用戶不知情

點擊劫持防御

(a):用JavaScript防止內嵌

// 此方法如果攻擊我們的網站,禁止我們的網站加載 腳本將失效;此時用b方法
 if(top.localtion != window.localtion){
        top.localtion = window.localtion
}

(b):X-FRAME-OPTIONS 禁止內嵌;頭部header添加

(c):其他輔助手段;例如:添加驗證碼

 

五、傳輸過程安全問題(http協議的竊聽和篡改)

http服務請求的時候會有很多的鏈路,http請求是明文的,接受和返回都是明文所以安全問題比較大;安全問題有,竊聽和篡改;

竊聽:用戶信息;敏感信息;

篡改:插入廣告;重定向網站;無法防御的XSS和CSRF攻擊;

防御:

  1、TLS(SSL)加密;服務器與鏈路之間的加密,數據的發送接收都會加密處理;也就是https

 

六、用戶密碼安全問題

1:密碼的作用:

  證明你是你;利用存儲的密碼對比輸入的密碼

2:密碼的存儲:

  防止密碼泄露:

    (a): 嚴禁密碼的明文存儲;哈希算法

    哈希算法特點

    明文--密文一一對應;雪崩效應;密文-明文無法反推;密文固定長度;常見哈希算法:md5、sha1、sha256

    (b): 單向變換(將密碼以特定的方式進行變換)

    (c): 密碼復雜度要求(防猜解)

    (d): 加鹽

    彩虹表:網絡提供的一個平台,用密文可查找明文(例如用MD5的密文查詢對應的明文);所以一層的MD5加密是能破解的

    最好是兩次MD5加密或者混合使用加密

3:密碼的傳輸

  (a): https傳輸

  (b): 頻率限制(例如一分鍾允許登錄的次數)

  (c):前端傳輸加密密碼(只能阻止用戶的明文密碼不被別人拿到)

4:密碼的替代方案

5:生物特征密碼

 

七、SQL注入攻擊

原理:原本的數據變成了數據帶上了程序;

防御:

  (a): 關閉錯誤輸出

  (b): 檢查數據類型

  (c): 對數據進行轉義

  (d): 參數化查詢;

  (e): 對象關系映射(ORM)

八、上傳的問題

1、上傳問題(例如圖片)

  用戶上傳文件,然后訪問;問題在:上傳后訪問的時候,如果不是圖片而是程序或者可執行的文件的時候,就出問題了;

2、上傳防御:

  (a): 限制上傳文件的后綴名

  (b): 文件類型的檢查

  (c): 文件內容檢查;文件的頭

  (d): 程序輸出;例如上傳文件,上傳后后台處理在返回給前台,不讓前台直接訪問上傳的東西;

  (e): 權限互斥-可寫和可執行互斥; 也就是寫入的不能唄執行;執行的權限不允許更改

九、社會工程學和信息泄露

  1、泄露系統的敏感信息

  2、泄露用戶的敏感信息

  3、泄露用戶密碼

  4、錯誤信息時空

  5、SQL注入

  6、水平權限控制不當(權限以及身份驗證)

  第三方的防御Oauth思想(例如扣扣、微信授權登錄)

 

  1、一切行為由用戶授權

  2、授權行為不泄露敏感信息

  3、首選會過期

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM