Stufe 4c (#764): Kommentare in C#, WebUI-Skripten, CSS und HTML auf Englisch
Rund 2.600 Kommentarblöcke in 310 C#-Dateien übersetzt, Begründungen vollständig erhalten: blockweise gleiche Anzahl wie vorher, kein Block unter 60 % seiner Länge, der Code außerhalb der Kommentare per Tokenizer byte-identisch geprüft. Zitate deutscher Oberflächentexte und Testdaten bleiben deutsch. WebUI: Kommentare in JS/CSS/HTML übersetzt, JSDoc-@param an die in 4b umbenannten Parameter angeglichen. Dabei behoben: - 4b hatte "tag" (HTML-Tag) als deutsches "Tag" gelesen und zu "dayValue" gemacht (makeElement, svg, Tagesübersicht) - zurück auf tag/day. - Aufgaben "InProgress" bekamen die Plakettenart "laufend", für die es nie eine CSS-Klasse gab - jetzt "success" wie laufende Instanzen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
da4ceac7d5
commit
837a634a22
@@ -4,13 +4,13 @@ using Shouldly;
|
||||
namespace ClawdDotNet.Tools.Tests.Database;
|
||||
|
||||
/// <summary>
|
||||
/// S1 aus der Bestandsaufnahme: Die Tabellen-Whitelist suchte den erlaubten Namen als
|
||||
/// Teilzeichenkette irgendwo im Statement — auch in einem Kommentar. Bei
|
||||
/// allowedTables ["prices"] genügte deshalb "DELETE FROM users -- prices", um eine
|
||||
/// beliebige andere Tabelle zu löschen.
|
||||
/// S1 from the inventory: the table whitelist looked for the allowed name as a
|
||||
/// substring anywhere in the statement — including in a comment. With
|
||||
/// allowedTables ["prices"] therefore "DELETE FROM users -- prices" was enough to delete
|
||||
/// any other table.
|
||||
///
|
||||
/// Die Gegenproben sind genauso wichtig wie die Angriffe: Ein zu strenger Filter, der
|
||||
/// legitime Abfragen blockiert, wäre im Betrieb genauso unbrauchbar.
|
||||
/// The counter-checks are just as important as the attacks: a filter that is too strict and
|
||||
/// blocks legitimate queries would be just as useless in operation.
|
||||
/// </summary>
|
||||
public sealed class SqlGuardTests
|
||||
{
|
||||
@@ -19,10 +19,10 @@ public sealed class SqlGuardTests
|
||||
private static SqlInspection Inspect(string sql) => SqlGuard.Inspect(sql, Allowed);
|
||||
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// Angriffe — alle müssen abgelehnt werden
|
||||
// Attacks — all must be rejected
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
// ─── #610: wiederholbares Anlegen und Strukturabfragen ───
|
||||
// ─── #610: repeatable creation and structure queries ───
|
||||
|
||||
[Theory]
|
||||
[InlineData("CREATE TABLE IF NOT EXISTS prices (id INT)", SqlOperation.Schema)]
|
||||
@@ -86,7 +86,7 @@ public sealed class SqlGuardTests
|
||||
[InlineData("INSERT INTO users SELECT * FROM prices")]
|
||||
public void Ein_einziger_unerlaubter_Join_reicht_zur_Ablehnung(string sql)
|
||||
{
|
||||
// Entscheidend: JEDE referenzierte Tabelle muss erlaubt sein, nicht irgendeine.
|
||||
// Crucial: EVERY referenced table must be allowed, not just any one.
|
||||
var result = Inspect(sql);
|
||||
|
||||
result.IsValid.ShouldBeFalse();
|
||||
@@ -109,7 +109,7 @@ public sealed class SqlGuardTests
|
||||
}
|
||||
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// Gegenproben — legitime Abfragen müssen durchgehen
|
||||
// Counter-checks — legitimate queries must get through
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Theory]
|
||||
@@ -132,8 +132,8 @@ public sealed class SqlGuardTests
|
||||
[InlineData("SELECT * FROM prices WHERE aktion = 'drop'")]
|
||||
public void Harmlose_Schluesselwoerter_in_Werten_gelten_nicht_als_Schreibzugriff(string sql)
|
||||
{
|
||||
// Der alte Substring-Test stufte diese Abfragen fälschlich als Schreib- bzw.
|
||||
// Strukturzugriff ein und blockierte sie für ReadOnly-Agenten.
|
||||
// The old substring test wrongly classified these queries as write or
|
||||
// structure access and blocked them for read-only agents.
|
||||
var result = Inspect(sql);
|
||||
|
||||
result.IsValid.ShouldBeTrue(result.Error);
|
||||
|
||||
Reference in New Issue
Block a user