做服務端開發也有7年的時間了,從開發-高級開發-技術經理-高級開發-?。重新做回程序員,盡管心裡上難免有些不甘心,但是按照欲進先退的理念,我確定我的下一個方向是架構師。
今天談談對接口安全的淺略認識:
接口安全從兩個方面分析下:
古人教導我們未雨綢缪,居安思危。做服務端開發更是如此,在以前傳統的開發領域我們可能只會關心數據安全,不會考慮性能問題。但是在目前分布式、soa、微服務、高並發等互聯網思維下,我們開始對我們的服務進行拆!拆!拆!拆的原因有很多:
總體來說,就是高內聚,低耦合。
但是服務拆分後會產生一系列的問題等待解決,比如分布式事務問題。
性能安全:
出於各種原因,你的服務可能遇到性能問題,異常的網絡攻擊,人為的接口盜鏈、廣告灌水,批量刷注冊用戶等!
所以從性能安全上可以有以下考慮:
什麼是冪等性:我理解就是進行多次調用/執行,不影響結果的正確性。
那是不是所有的接口都要考慮冪等性,聽起來好像和麻煩很可怕,那我們具體分析下:
查詢類服務:不用考慮冪等性,因為查詢本身就是冪等的
刪除類服務:不用考慮冪等性,因為多次刪除的結果一樣
更新累服務:update a="xxx"不需要,update a = a+1需要
增加累服務:多次add要考慮冪等性
組合操作服務:一個服務需要刪除+增加,需要考慮
如何避免不冪等帶來的問題?