NodeJs 安全設計規範

  • CSRF攻擊

什麼是CSRF?
跨站請求僞造,是一種對網站的惡意利用。儘管聽起來像跨站腳本(XSS),但它與XSS非常不同,XSS利用站點內的信任用戶,而CSRF則通過僞裝成受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防範的資源也相當稀少)和難以防範,所以被認爲比XSS更具危險性
一個網頁通常會通過POST/PUT/DELETE請求更改對應用戶賬戶的信息。但是瀏覽器並不會限制其它網站對你網站的訪問。如果在其它網站中有一個鏈接叫“抽獎”,用戶點了,該鏈接正是調用你網站的支付接口,那麼用戶就會莫名奇妙的損失了錢財
解法辦法:
針對用戶所有的PUT/POST/DELETE請求提交都添加一個算法的校驗
用戶在每次請求之前先生成一個加密的字符串放入請求頭Headers中,服務端根據前端的算法進行解密,如果符合規則,則存儲在Redis中,並設置過期時間,如果該加密字符串在Redis中存在則代表使用過,則用戶提交失敗,如果挺符合規則且在Redis中不存在該字符串,則允許提交,並將該字符串存儲在Redis中用於下一次請求校驗

  • XSS攻擊

什麼是XSS?
通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載並執行攻擊者惡意製造的網頁程序。這些惡意網頁程序通常是JavaScript,但實際上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻擊成功後,攻擊者可能得到包括但不限於更高的權限(如執行一些操作)、私密網頁內容、會話和cookie等各種內容
解決辦法:
對用戶輸入的所有內容進行過濾,比如特殊的HTML標籤和特殊符號等

  • 越權:

什麼是越權?
由於沒有用戶權限進行嚴格的判斷,導致低權限的賬號(比如普通用戶)可以去完成高權限賬號(比如超級管理員)範圍內的操作
解決辦法:
對每一個用戶的請求身份進行權限校驗,符合權限範圍則正常請求,否則警告

  • 中間人攻擊:

攻擊者與通訊的兩端分別創建獨立的聯繫, 並交換其所收到的數據, 使通訊的兩端認爲他們正在通過一個私密的連接與對方直接對話, 但事實上整個會話都被攻擊者完全控制. 在中間人攻擊中, 攻擊者可以攔截通訊雙方的通話並插入新的內容
目前比較常見的是在公共場所放置精心準備的免費 wifi, 劫持/監控通過該 wifi 的流量. 或者攻擊路由器, 連上你家 wifi 攻破你家 wifi 之後在上面劫持流量等
解決辦法:
對於通信過程中的 MITM, 常見的方案是通過 PKI / TLS 預防, 及時是通過存在第三方中間人的 wifi 你通過 HTTPS 訪問的頁面依舊是安全的. 而 HTTP 協議是明文傳輸, 則沒有任何防護可言.
不常見的還有強力的互相認證, 你確認他之後, 他也確認你一下; 延遲測試, 統計傳輸時間, 如果通訊延遲過高則認爲可能存在第三方中間人; 等等

  • SQL注入:

什麼是SQL注入?
當所執行的一些操作中有部分由用戶傳入時, 用戶可以將其惡意邏輯注入到操作中. 當你使用 eval, new Function 等方式執行的字符串中有用戶輸入的部分時, 就可能被注入攻擊
Sql 注入是網站常見的一種注入攻擊方式. 其原因主要是由於登錄時需要驗證用戶名/密碼, 其執行 sql 類似SELECT*FROMusersWHEREusernae='myName’ANDpassword=‘mySecret’;
解決辦法:
給表名或者字段名添加特殊的前綴,避免碰巧猜到
報錯信息避免放回前端,應記錄在服務器日誌
過濾/驗證用戶輸入的字符
對用戶輸入的字符進行轉義

  • HTTP/HTTPS

什麼是HTTPS?
以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面
爲什麼選擇HTTPS?
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全

  • OAuth 2.0:

什麼是OAuth 2.0?
OAuth2.0是OAuth協議的延續版本,但不向前兼容OAuth 2.0(即完全廢止了OAuth1.0)。 OAuth 2.0關注客戶端開發者的簡易性。要麼通過組織在資源擁有者和HTTP服務商之間的被批准的交互動作代表用戶,要麼允許第三方應用代表用戶獲得訪問的權限。同時爲Web應用,桌面應用和手機,和起居室設備提供專門的認證流程。2012年10月,OAuth 2.0協議正式發佈爲RFC 6749

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