feat(ai-review 對話收斂): 讀 PR review 留言判斷解決狀態並收斂 findings #42

Merged
jiantw83 merged 68 commits from ai-review-resolve/20260623-110950 into develop 2026-06-23 08:29:38 +00:00
Showing only changes of commit e73e18f2c3 - Show all commits
+4 -4
View File
5
@@ -125,13 +125,13 @@ export function resetRateLimit() {
const stripSlash = (s) => String(s || '').replace(/\/$/, ''); const stripSlash = (s) => String(s || '').replace(/\/$/, '');
/** /**
* 以實際 hostname 精確比對是否為 OpenRouter,避免被偽造的 baseURL * 以實際 hostname 精確比對是否為 OpenRouter(僅接受 apex 域名 `openrouter.ai`),
* (如 `openrouter.ai.evil.com``evil.com/openrouter.ai`)矇騙而把 API key 送往惡意主機。 * 避免被偽造的 baseURL(如 `openrouter.ai.evil.com``evil.com/openrouter.ai` 或任何子網域)
* 矇騙而把 API key 送往非 OpenRouter 主機。
*/ */
function isOpenRouterBaseURL(baseURL) { function isOpenRouterBaseURL(baseURL) {
admin marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🔴 嚴重
審查員:Assassin
問題:在 QUOTA_STRATEGIES 中,如果 config.apiKeys 是一個陣列,代碼只取 [0] 作為 API Key,但如果這個 key 是洩漏的或是環境配置錯誤,可能會導致敏感資訊在未經嚴格驗證的情況下被發送到 baseURL 指定的端點。
建議:請務必確保所有的 API 請求都經過完整的信任邊界審核,不要僅憑環境變數就自動信任該 Key 具備查詢帳號額度的權限,並在傳輸前對 baseURL 進行嚴格的白名單檢查。

**嚴重等級**:🔴 嚴重 **審查員**:Assassin **問題**:在 `QUOTA_STRATEGIES` 中,如果 `config.apiKeys` 是一個陣列,代碼只取 `[0]` 作為 API Key,但如果這個 key 是洩漏的或是環境配置錯誤,可能會導致敏感資訊在未經嚴格驗證的情況下被發送到 `baseURL` 指定的端點。 **建議**:請務必確保所有的 API 請求都經過完整的信任邊界審核,不要僅憑環境變數就自動信任該 Key 具備查詢帳號額度的權限,並在傳輸前對 baseURL 進行嚴格的白名單檢查。
try { try {
const host = new URL(baseURL).hostname.toLowerCase(); return new URL(baseURL).hostname.toLowerCase() === 'openrouter.ai';
return host === 'openrouter.ai' || host.endsWith('.openrouter.ai');
} catch { } catch {
return false; return false;
} }
7