Repository navigation
Conversation
This comment has been minimized.
This comment has been minimized.
| // 2. Fallback Gmail SMTP via Nodemailer | ||
| const gmailUser = Deno.env.get("GMAIL_USER"); | ||
| const gmailAppPass = Deno.env.get("GMAIL_APP_PASSWORD"); | ||
| const gmailUser = getEnv("GMAIL_USER") || "tusseaumathias85@gmail.com"; |
There was a problem hiding this comment.
CRITICAL: Fallback Gmail codé en dur exposant une adresse personnelle
| const gmailUser = getEnv("GMAIL_USER") || "tusseaumathias85@gmail.com"; | |
| const gmailUser = getEnv("GMAIL_USER"); | |
| if (!gmailUser) { | |
| throw new Error("GMAIL_USER manquant dans l'environnement"); | |
| } |
Si GMAIL_USER n'est pas défini en production, tous les e-mails seront émis depuis tusseaumathias85@gmail.com avec le mot de passe d'application correspondant. Cela expose une adresse personnelle et peut provoquer des fuites de données ou un blocage du compte Gmail.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| const urlSecret = req.nextUrl.searchParams.get("secret") || ""; | ||
| const provided = authHeader.replace(/^Bearer\s+/i, "").trim() || urlSecret.trim(); | ||
|
|
||
| if (cronSecret && provided !== cronSecret) { |
There was a problem hiding this comment.
CRITICAL: Bypass d'authentification du endpoint cron lorsque CRON_SECRET n'est pas configuré
| if (cronSecret && provided !== cronSecret) { | |
| if (!cronSecret) { | |
| return NextResponse.json({ success: false, error: "CRON_SECRET manquant." }, { status: 500 }); | |
| } | |
| if (provided !== cronSecret) { | |
| return NextResponse.json({ success: false, error: "Non autorisé (CRON_SECRET invalide)." }, { status: 401 }); | |
| } |
Si la variable d'environnement CRON_SECRET n'est pas définie, le endpoint /api/cron/purge-support est entièrement ouvert. N'importe qui peut déclencher la suppression de tickets et la purge de fichiers Z1.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| </div> | ||
| </div> | ||
| <div className="prose prose-sm max-w-none text-slate-800 leading-relaxed pl-12"> | ||
| <ReactMarkdown>{m.message}</ReactMarkdown> |
There was a problem hiding this comment.
CRITICAL: XSS par rendu non sanitisé de messages Markdown
| <ReactMarkdown>{m.message}</ReactMarkdown> | |
| import ReactMarkdown from "react-markdown"; | |
| import rehypeSanitize from "rehype-sanitize"; |
| <ReactMarkdown>{m.message}</ReactMarkdown> | |
| <ReactMarkdown rehypePlugins={[rehypeSanitize]}>{m.message}</ReactMarkdown> |
Les messages de tickets sont rendus via ReactMarkdown sans sanitisation. Un utilisateur ou un admin peut injecter du HTML/JavaScript dans une description ou une réponse, et celui-ci s'exécutera dans le navigateur de tous les lecteurs du ticket.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (15 files)
Previous Review Summary (commit d7751c4)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit d7751c4)Status: 3 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)CRITICAL
Files Reviewed (9 files)
Reviewed by free · Input: 187.8K · Output: 21K · Cached: 3.1M |
Ajout du support mAI, améliorations importantes. Intégration de nouvelles API. Corrections de bugs.