互聯網安全架構平臺設計

一、Web安全常見攻擊手段

1 XSS

跨站腳本攻擊(Cross Site Scripting)縮寫為CSS,避免與CSS層疊樣式名稱沖突,縮寫改寫為XSS。

**攻擊原理:**數據提交轉發(fā)到另一個頁面展示,使用js腳本語言,瀏覽器默認支持腳本語言執(zhí)行
**攻擊常見場景:**論壇,評論XSS
**防御手段:**特殊字符,使用轉義字符轉換
**解決辦法**:服務后端使用過濾器統一攔截請求數據,將特殊字符轉義處理,但是有的表單需要提交特殊字符,這種情況,在實際開發(fā)中,特殊考慮

2 SQL注入

原理:dao層采用sql拼接的方式,沒有采用預編譯方式。

攻擊示例:
/login?username=xiaoming&password=' or 1='1;
后臺sql:select * from user where username='${usernmae}' and password='${password}'

**mybatis中:** $是采用sql拼接的方式,#會預編譯sql語句,防止sql語句攻擊

3 防盜鏈

限制資源只能在某個服務器上訪問

原理:使用http請求頭中的referer屬性,標識該鏈接的來源域名,服務端程序,通過檢測請求頭中的referer,是否給與響應
實際使用場景:圖片、視頻、接口等需要保護的資源,對請求做限制,例如添加黑名單、白名單來限制可訪問的網站
技術實現:網關,過濾器,添加黑名單白名單,對需要保護的接口或特定請求地址進行訪問限制

4 CSRF

跨站請求偽造(英語:Cross-site request forgery)

冪等性:唯一性,也就是防止表單重復提交,使用token作為令牌,每次請求前,必須獲取一個令牌,將令牌token存在request header中,請求到達服務器后,服務端刪除該令牌,當請求第二次達到時,發(fā)現token不存在,返回請求錯誤
場景:服務端api采用冪等設計,使用token令牌來控制請求??蛻舳丝梢蕴崆吧珊芏鄑oken,然后多次發(fā)送相同請求,每次使用事先生成好的token,來發(fā)起攻擊。
如何防止機器模擬請求發(fā)起攻擊:
1 使用圖形驗證碼
2 使用nginx對客戶端限流
3 配置黑名單和白名單(發(fā)現惡意攻擊后,將請求端IP加入黑名單,禁止訪問)
如何防止偽造token請求:
須知:互聯網上沒有絕對防止通過抓包分析到token的方法。
在操作核心業(yè)務,比如修改密碼,支付下單,轉賬等核心業(yè)務時,使用短信驗證碼方式或者人臉識別方式,確認是否為本人操作。(實際應用中,一般小金額不會驗證,大金額會驗證)

5 忘記密碼漏洞
原理:抓包后,模擬請求,用程序不停的嘗試登陸
如何防止:
1 密碼字母數字符號
2 重試5次仍然錯誤,出圖形驗證碼
3 配置防止DDOS,限流,限制IP訪問,黑名單和白名單

6 不要用隱藏域傳遞關鍵數據
例如流程有第一步、第二部、第三步,前面步驟的數據不要存在隱藏域或者js變量,存在后臺session中

7 上傳漏洞

上傳接口中,對文件格式做限制,黑客上傳木馬文件(可執(zhí)行程序),可能會導致服務崩潰。比如,文件可以為jsp,exe,bat文件。

案例:如果服務為java web,使用tomcat服務器,且服務端未做動靜分離,安全控制,在文件上傳的時候,上傳jsp,jsp頁面植入java刪除文件代碼,瀏覽器訪問該jsp,即可刪除。
如何防御:
1 不能用文件后綴判斷文件格式,讀取文件流,判斷文件格式(重要)
2 動靜分離,Nginx + Tomcat,nginx不能執(zhí)行jsp程序(重要)
3 服務器環(huán)境上硬盤不能刪除操作
4 前端做后綴限制
5 服務器生產環(huán)境禁止熱部署
6 限制上傳class、jsp、exe等可執(zhí)行程序

8 常見其他漏洞

  • jsp注釋,要使用java注釋<%--%>,不要使用htm注釋
  • 全局捕獲異常,統一返回異常信息
二、信息加密與漏洞掃描

加密算法,不能百分百防止,只是盡可能的消耗破解的成本
密碼,一般用單向加密,不可被解密,使用MD5加密再加鹽

  • 對稱加密

加解密使用同一個密鑰。常見的對稱加密方案:DES,AES
缺點:密碼容易泄露
有點:速度非???br> 場景:服務端與服務端通信,多方約定好相同的密鑰后,各自保護好密鑰
移動端APP,禁止使用對稱加密,apk安裝包可以反編譯獲取源碼中的密鑰

  • 非對稱加密

公鑰 + 私鑰 RSA
1 使用第三方工具生成非對稱加密鑰對,github上有代碼可生成,公開公鑰給客戶端,自己保存好私鑰(每個客戶端對應一對公鑰私鑰)
2 公鑰加密,私鑰解密;(安全,比如github本地倉庫同步)
私鑰加密,公鑰解密
有點:目前為止,最安全的加密手段
缺點:效率低
場景:第三方支付對接,核心金融結構對接

三、互聯網API接口安全設計
  • API冪等設計

防止網絡延遲或接口重復提交導致數據重復的問題,保證數據唯一性

解決方案:請求端將token放入request header中,redis生成token,單機版可以使用uuid來保證token的唯一性,分布式應用需要使用分布式全局id,使用AOP技術,自定義注解,實現處理表單重復提交的邏輯,消費掉token

  • web頁面表單重復提交

同上,將token放入form表單中。當進入表單頁面時(也可以用自定義注解實現,給每個需要token的頁面生成token),后臺生成一個token存入頁面的hidden input

  • 如何保證外網開放接口的安全性
    1 搭建API網關控制接口訪問權限
    2 開放平臺設計oauth2.0協議(安全認證),包括qq、微信、微博等第三方聯合登陸
    3 采用https加密傳輸協議(nginx配置https)
    4 API接口數字簽名,非對稱加密,rsa2.5,基于令牌的方式實現API接口調用。防止抓包分析篡改數據

    一般來說,表結構設計
    appName 機構名稱
    appId 應用id(一次注冊,永遠不變,相當于主鍵,便于后臺控制該應用的使用權)
    appSecret 應用密鑰(可改變,避免泄露,發(fā)現泄露后更改密鑰)
    isFlag 是否可用(是否對某個機構開放)
    accessToken 最近一次的accessToken

    服務端步驟:根據appId,appSecret查詢token,有則刪除原來的token,再生成新的token,用redis來控制token過期時間,token作為鍵,appId作為值;具體調用服務時攜帶token,后臺判斷token的有效性及是否對機構開放(根據isFlag)。
    客戶端:如果token過期,重新調用獲取token的接口?一般采用job,根據過期時間來設定一個定時任務,設置最新的token,這樣就可以保證調用服務時,從定時任務執(zhí)行的結果拿到token,實現token永久有效

四、網站安全漏洞掃描與抓包分析
  • 如何防止抓包篡改數據

場景:金融系統,傳遞用戶userid,金額等數據
用戶防御方式:使用關鍵聯網業(yè)務時,盡量不要連接不可信wifi,使用4g流量 ,使用移動運營商提供的上網服務,除非4g流量使用偽基站發(fā)送詐騙短信。短信鏈接不要點擊。

服務端程序防御方式:驗證簽名和令牌方式實現參數傳遞
令牌方式:
1 客戶端界面?zhèn)鞯街飨到y后臺的userid,金額等參數,主系統服務器使用httpclient調用支付系統獲取令牌參數接口,將userid,金額等參數傳過去,獲取到返回的參數令牌,并給客戶端
2 客戶端拿到參數令牌后,跳轉到支付系統
3 支付系統通過該參數令牌,取到保存好的參數,完成支付相關業(yè)務
除非黑客能黑掉主系統服務端或者支付系統,常見的抓包是通過連接局域網,該局域網內有黑客對客戶端發(fā)起的請求進行抓包獲取明文數據或者篡改數據,發(fā)生安全事故

  • 抓包工具

在請求前后可以進行攔截,修改請求參數或修改返回數據
1 測試工程,核對傳入參數是否符合要求
2 黑客:獲取明文數據,篡改數據

五、Https協議
  • http協議

超文本傳輸協議,底層使用socket TCP長連接,基于請求與響應,同步請求

  • 重定向

瀏覽器發(fā)起兩次請求,如果返回狀態(tài)302給客戶端,在響應頭中存放對應的值就是重定向地址,直接訪問本地。后臺可以直接寫response.setStatus(302);response.setHeader("location", "loginPage");

  • https協議

https底層實現,使用混合加密算法(對稱加密和非對稱加密)
先生成對稱加密密鑰SC,然后使用非對稱加密生成的公鑰SCP,對SC進行加密,最后通過SC對請求數據進行對稱加密傳輸(因為對稱加密效率高)
流程:
客戶端為瀏覽器,服務端為證書服務
1 瀏覽器向服務器端發(fā)送https請求
2 服務端向客戶端發(fā)送證書和公鑰
3 瀏覽器驗證證書是否有效,有效,則生成一個隨機數,作為對稱密鑰,然后使用公鑰對對稱密鑰進行加密,發(fā)送到服務端
4 服務端使用私鑰對接收到的數據解密,得到隨機數,然后使用該隨機數進行對稱加密傳輸數據到瀏覽器
5 瀏覽器使用隨機數解密,得到正確的數據,驗證可靠性
6 最后,瀏覽器使用隨機數對傳輸參數進行對稱加密傳輸
如何使用https:
阿里云申請免費一年的證書,支持nginx,apache,tomcat配置,按照官方教程配置即可,一般使用nginx來配置https,如果tomcat集群,每個集群都要配置相對來說較nginx會多一些工作量

六、電子商務風控與黑名單白名單系統
  • 企業(yè)網關如何架構
  • 企業(yè)級網關應用場景

路由地址,反向代理,黑名單與白名單,授權安全,跨域(保證域名(網關地址)相同使用nginx區(qū)分不同的項目路徑進行轉發(fā)跳轉)

  • 企業(yè)網關作用
  • 常用網關框架,Nginx, Zuul

Zuul使用JAVA編寫,微服務專用,springboot搭建一個zuul服務并起到,在application.yml文件中配置管理的項目地址
Nginx 使用C編寫,針對服務器,配置搞定,nginx根據項目名進行轉發(fā)

  • 基于Zuul框架實現接口權限判斷
七、基于多種手段防御DDOS攻擊
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容