Ich schreibe ein Programm in. NET2.0 und ich muss die Eingaben vor der Verwendung von ihnen zu entkommen. Leider funktioniert das Standardparametermethodensystem nicht vollständig in dem System, das ich verwende. Mit der ODBCCommand-Klasse kann ich keine? Parameter im Select-Teil der Anweisung (was für die kleinen Tricks erforderlich ist, die ich mache), ohne einen Fehler zu bekommen, also muss ich Strings manuell entschlüsseln, die ein einzelnes Anführungszeichen enthalten können oder nicht ('). Irgendwelche Vorschläge?Standard-Funktion für Escaping-Strings in SQL
Bearbeiten- Beispiel SQL:
Wie würde ich es mag:
INSERT INTO TABLE_A (COLUMN_A, COLUMN_B)
SELECT (?, COLUMN_C)
FROM TABLE_B
WHERE COLUMN_D = ?
wie es ist:
INSERT INTO TABLE_A (COLUMN_A, COLUMN_B)
SELECT ('INPUT_VALUE_HERE', COLUMN_C)
FROM TABLE_B
WHERE COLUMN_D = ?
Edit: Sybase ASE ist der DB-Treiber, über ODBC
Können Sie ein Beispiel für die SELECT geben, die Sie ausführen möchten? – Steven
Wenn dies der Spaltenname oder der Tabellenname usw. ist, vergessen Sie nicht, dass Angreifer kein einfaches Angebot für die Injektion benötigen. Andernfalls ? sollte funktionieren, nicht wahr? –
Auch welche Datenbank benutzen Sie? Nicht alle Datenbanken haben denselben Escape-Zeichensatz und abhängig davon, wo in der SELECT-Anweisung Sie sich befinden, benötigen Sie möglicherweise andere Escape-Zeichen. – Steven