REST API 本身無內置安全機制,開放即風險。
核心目標:降低未經授權的訪問、篡改、刪除風險。
兩大守門員:
用「開發任務管理系統KPI」先把安全指標寫進 OKR:
x-api-key: abc123 spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://user
predicates:
- Path=/api/user/**
filters:
- name: RequestHeader
args:
name: x-api-key
value: abc123
提交前跑「代碼審查助手」:提示禁止把密鑰硬編碼在 YML,應走環境變量 ?
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/public").permitAll()
.requestMatchers("/api/user/**").hasAuthority("SCOPE_read")
.anyRequest().authenticated())
.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
.build();
}
}
用「代碼優化」把默認 HS256 換成 RS256,CPU 降 30 %,密鑰管理更安全 ??
| 維度 | API 密鑰 | OAuth 2.0 |
|---|---|---|
| 實現成本 | ? | ???? |
| 細粒度授權 | ? | ?(scope) |
| 令牌生命周期 | 長期 | 短期+刷新 |
| 適合場景 | 內部只讀、微服務 | 第三方登錄、多租戶 |
| 泄露影響 | 全局權限 | 受限 scope+過期 |
立即收藏 5 款 AI 提效神器:
選對協議,今天就把 API 大門鎖好,讓攻擊者無縫可鉆!??
原文鏈接: https://blog.dreamfactory.com/how-to-secure-rest-apis-api-keys-vs-oauth