feat(ai-review 對話收斂): 讀 PR review 留言判斷解決狀態並收斂 findings #42
+4
-4
@@ -125,13 +125,13 @@ export function resetRateLimit() {
|
||||
const stripSlash = (s) => String(s || '').replace(/\/$/, '');
|
||||
|
||||
/**
|
||||
* 以實際 hostname 精確比對是否為 OpenRouter,避免被偽造的 baseURL
|
||||
* (如 `openrouter.ai.evil.com` 或 `evil.com/openrouter.ai`)矇騙而把 API key 送往惡意主機。
|
||||
* 以實際 hostname 精確比對是否為 OpenRouter(僅接受 apex 域名 `openrouter.ai`),
|
||||
* 避免被偽造的 baseURL(如 `openrouter.ai.evil.com`、`evil.com/openrouter.ai` 或任何子網域)
|
||||
* 矇騙而把 API key 送往非 OpenRouter 主機。
|
||||
*/
|
||||
function isOpenRouterBaseURL(baseURL) {
|
||||
|
admin marked this conversation as resolved
Outdated
|
||||
try {
|
||||
const host = new URL(baseURL).hostname.toLowerCase();
|
||||
return host === 'openrouter.ai' || host.endsWith('.openrouter.ai');
|
||||
return new URL(baseURL).hostname.toLowerCase() === 'openrouter.ai';
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user
嚴重等級:🔴 嚴重
審查員:Assassin
問題:在
QUOTA_STRATEGIES中,如果config.apiKeys是一個陣列,代碼只取[0]作為 API Key,但如果這個 key 是洩漏的或是環境配置錯誤,可能會導致敏感資訊在未經嚴格驗證的情況下被發送到baseURL指定的端點。建議:請務必確保所有的 API 請求都經過完整的信任邊界審核,不要僅憑環境變數就自動信任該 Key 具備查詢帳號額度的權限,並在傳輸前對 baseURL 進行嚴格的白名單檢查。