Security F5/F6 + Konzept-Status: DB-TLS-Startwarnung, Log-Redaction geprueft
- F5: Startwarnung, wenn der DB-Connection-String kein SslMode erzwingt (String selbst wird nie geloggt). Eure Connection enthaelt bereits SslMode -> Warnung bleibt aus. - F6: geprueft - keine Secret-Werte in Logs (nur Vorhandensein-Flags/Fehlermeldungen). - Sicherheitskonzept: Status F1-F7 dokumentiert. Build 0 Fehler, --smoke-ui ok. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
f3ed63cf9d
commit
36c89a6acf
+24
@@ -138,6 +138,9 @@ internal static class Program
|
||||
// Quelle: Umgebungsvariable POLYTRADER_MASTER_KEY, sonst gitignorierte master.key im App-Ordner.
|
||||
ConfigureSecretProtection(AppHost.Services.GetRequiredService<TerminalLogger>());
|
||||
|
||||
// F5 (Sicherheit): warnen, wenn die (remote) DB-Verbindung keine TLS-Erzwingung hat.
|
||||
WarnIfDbTlsNotEnforced(AppHost.Services);
|
||||
|
||||
try
|
||||
{
|
||||
// Trade-Nummerierung fortsetzen: höchste bestehende TradeId serverseitig lesen
|
||||
@@ -324,6 +327,27 @@ internal static class Program
|
||||
"Master-Key setzen (env POLYTRADER_MASTER_KEY oder master.key), siehe docs/sicherheit.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// F5: Warnt, wenn der DB-Connection-String keine TLS-Erzwingung (SslMode) enthält. Der String
|
||||
/// selbst wird NICHT geloggt (enthält das Passwort) – nur das Fehlen der TLS-Option.
|
||||
/// </summary>
|
||||
private static void WarnIfDbTlsNotEnforced(IServiceProvider services)
|
||||
{
|
||||
try
|
||||
{
|
||||
var config = services.GetService<Microsoft.Extensions.Configuration.IConfiguration>();
|
||||
string conn = config?["Database:MySqlConnectionString"] ?? string.Empty;
|
||||
if (string.IsNullOrEmpty(conn)) return;
|
||||
if (conn.IndexOf("sslmode", StringComparison.OrdinalIgnoreCase) < 0)
|
||||
{
|
||||
services.GetRequiredService<TerminalLogger>().Warning(
|
||||
"⚠️ SICHERHEIT: DB-Verbindung ohne SslMode – Transportverschlüsselung zur (remote) MySQL nicht erzwungen. " +
|
||||
"Im Connection-String 'SslMode=Required' (oder VerifyFull) setzen, siehe docs/sicherheit.");
|
||||
}
|
||||
}
|
||||
catch { /* Warnung ist best-effort; darf den Start nie stören */ }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// F1: Verschlüsselt einmalig/idempotent evtl. vorhandene Klartext-Credentials in der DB (Alt-Bestand
|
||||
/// wird beim Re-Save durch den EF-Converter verschlüsselt). Nur wenn ein Master-Key gesetzt ist.
|
||||
|
||||
Reference in New Issue
Block a user