| 層級 | 措施 | 成本 | 有效性 |
|---|---|---|---|
| 傳輸層 | **強制 HTTPS (TLS 1.2+)**,啟用 HSTS、Certificate Pinning (OkHttp `CertificatePinner`) | 低 | 防竊聽/篡改/冒充,基礎必做 |
| 應用層 簽名驗證 | 請求參數 + 時間戳 + 隨機數 + AppSecret 計算簽名 (HMAC-SHA256),服務端驗證並防重放 (Redis 存儲 nonce) | 中 | 防偽造/重放,核心業務必做 |
| 應用層 加密 | 敏感字段 (密碼、身份證) AES-GCM 加密傳輸,密鑰協商用 ECDH 或 RSA | 中 | 防數據洩露,合規要求 |
| 客戶端 強化 | 代碼混淆 + 加固 (DexGuard/360/騰訊樂固)、關鍵邏輯 Native (JNI)、反調試/反注入、動態密鑰下發 | 高 | 提高逆向門檻,**無法絕對防止** |
| 服務端 風控 | 設備指紋、IP 信譽、行為分析 (頻率、軌跡)、驗證碼、風險決策引擎 | 高 | 業務級防刷/防薅羊毛,最終防線 |
class SignInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
long timestamp = System.currentTimeMillis() / 1000;
String nonce = UUID.randomUUID().toString().replace("-", "").substring(0, 16);
String sign = buildSign(original, timestamp, nonce); // 參數排序 + AppSecret + HMAC
Request signed = original.newBuilder()
.header("X-Timestamp", String.valueOf(timestamp))
.header("X-Nonce", nonce)
.header("X-Sign", sign)
.build();
return chain.proceed(signed);
}
}
安全是體系工程,**HTTPS + 簽名防重放 + 服務端風控** 是性價比最高的基線方案;高價值業務再疊加加固、風控引擎、設備指紋等深度防護。