程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 【尋找自己】關於接口安全,尋找自己接口

【尋找自己】關於接口安全,尋找自己接口

編輯:JAVA綜合教程

【尋找自己】關於接口安全,尋找自己接口


做服務端開發也有7年的時間了,從開發-高級開發-技術經理-高級開發-?。重新做回程序員,盡管心裡上難免有些不甘心,但是按照欲進先退的理念,我確定我的下一個方向是架構師。

今天談談對接口安全的淺略認識:

接口安全從兩個方面分析下:

  • 性能安全
  • 數據安全

古人教導我們未雨綢缪,居安思危。做服務端開發更是如此,在以前傳統的開發領域我們可能只會關心數據安全,不會考慮性能問題。但是在目前分布式、soa、微服務、高並發等互聯網思維下,我們開始對我們的服務進行拆!拆!拆!拆的原因有很多:

      總體來說,就是高內聚,低耦合。

      但是服務拆分後會產生一系列的問題等待解決,比如分布式事務問題。

性能安全:

出於各種原因,你的服務可能遇到性能問題,異常的網絡攻擊,人為的接口盜鏈、廣告灌水,批量刷注冊用戶等!

所以從性能安全上可以有以下考慮:

         什麼是冪等性:我理解就是進行多次調用/執行,不影響結果的正確性。     

         那是不是所有的接口都要考慮冪等性,聽起來好像和麻煩很可怕,那我們具體分析下:

           查詢類服務:不用考慮冪等性,因為查詢本身就是冪等的

           刪除類服務:不用考慮冪等性,因為多次刪除的結果一樣

           更新累服務:update a="xxx"不需要,update a = a+1需要

           增加累服務:多次add要考慮冪等性

           組合操作服務:一個服務需要刪除+增加,需要考慮

       如何避免不冪等帶來的問題?

  •        add update 等操作不要設置重試(客戶端不要重試,dubbo服務也可以設置是failfast的,...)
  •        分情況考慮:完全避免重試不可能,比如客戶端提交注冊信息,結果請求超時,但是最終還是插入到數據庫了。但是對於客戶端來說,應該提示用戶進行重新提交。SO看情況了:必須保證冪等(數據唯一索引避免重復,其它業務邏輯);不考慮冪等(多次評論就多次評論吧,誰讓你接口慢呢。服務端客戶端開始互相撕逼了)

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved