api安全筆記

2021-10-03 02:47:13 字數 1882 閱讀 1305

為客戶端提供服務的一種方式.

當我們討論api安全時,包括

api安全的目標:cia

spoofing: 欺騙.偽裝成某人.

tampering:干預.將不希望被修改的資料,訊息/設定進行更改.

requdiation:否認,拒絕承認做過的事.

information disclosure:資訊洩露.將你希望保密的資訊披露出來.

denial of service:拒絕服務.阻止使用者訪問資訊和服務.

elevation of privilege:越權,做了你不希望他做的事.

認證:(欺騙).確保使用者真的是他們自己.

授權:(資訊洩露/干預/越權).確保每個針對api的訪問都是經過授權的.

審計:(否認).確保所有的操作都被記錄,以便追溯和監控.

流控:(拒絕服務).防止使用者請求淹沒api.

加密:(資訊洩露).確保出入api的資料都是私密的.

當限流機制生效時,請求應該立即被拒絕,並返回狀態碼429(too many request)

可以在負載均衡/反向**上做(集群),應用上做(單體).

保證可用性

流控應該做在整個安全機制的第一位.

ratelimiter類

認證和登陸不是乙個概念

認證每次都會執行,登陸一般只發生一次.

認證無論如何都會繼續,傳遞到審計,最終是否生效由授權完成.

最基礎的認證,但並不是非常安全

步驟各種校驗

介面層校驗

介面層校驗一般採用 jsr-303 進行校驗,由框架層面進行校驗,

資料庫校驗

在介面到資料庫的傳輸過程中,由於業務的執行,可能導致資料異常,因此需要在資料庫層面進行校驗

密碼加密

使用者的密碼一定要加密儲存

加密演算法的選擇

傳入的密碼能否加密成記錄的密碼.

鹽為了避免相同值雜湊後值仍然相同的問題.

使用隨機字串做鹽,並編入密文中.

https訪問

資料在到達應用之前的安全保證.

證書的獲取方式

一般在網路入口設定https

在認證之後,授權之前.

日誌需要持久化.

審計需要在應用的入口和出口處處理.

filter是web規範

後續的是spring提供的過程

controlleradvice一般是全域性異常處理.

請求是否需要認證,如果需要認證,卻無法認證,則返回401.需要認證,但沒有成功

有沒有許可權.無許可權則返回403,身份認證正常,但無許可權.

401通過修改請求的引數可以避免,但如果是403,則無論進行何種修改都不應該繞過403.

訪問控制

acl : access control lists

簡單易用,實現容易.無法滿足複雜的業務需求,不易管理.

誰能做什麼直接和人掛鉤.

linux就使用了acl

rbac: role based access control

引入角色概念,簡化管理.開發起來相對acl複雜

誰能做什麼,和人的角色相關

登陸不是每一次都需要的.

不要在每一次請求中都傳入使用者名稱密碼.

基於token的身份認證

基於cookie和session的實現

優點: 缺點

cookie的傳送與瀏覽器中的cookie的網域名稱位址和請求路徑有關

如果cookie是頂級網域名稱,則cookie在下級網域名稱中也會傳送出去

cookie中還可以設定是否允許指令碼傳送,目的是為了防止跨站指令碼攻擊.

問題: 固定session攻擊

處理方法:

先判斷是否存在session.如果存在乙個session,則讓原有session失效.

api介面安全

介面的安全性主要圍繞token timestamp和sign三個機制展開設計,保證介面的資料不會被篡改和重複呼叫,下面具體來看 token授權機制 使用者使用使用者名稱密碼登入後伺服器給客戶端返回乙個token 通常是uuid 並將token userid以鍵值對的形式存放在快取伺服器中。服務端接收...

API安全機制

api 安全機制 介面的安全性主要圍繞token timestamp和sign三個機制展開設計,保證介面的資料不會被篡改和重複呼叫,下面具體來看 token授權機制 使用者使用使用者名稱密碼登入後伺服器給客戶端返回乙個token 通常是uuid 並將token userid以鍵值對的形式存放在快取伺...

API 介面安全

什麼是時序攻擊以及如何防範時序攻擊?時序攻擊屬於側通道攻擊 旁路攻擊 side channel attack 側通道攻擊是指利用通道外的資訊,比如加解密的速度 加解密時晶元引腳的電壓 密文傳輸的流量和途徑等進行攻擊的方式,乙個詞形容就是 旁敲側擊 舉乙個最簡單的計時攻擊的例子,某個函式負責比較使用者...