/ / Können Leerzeichen, Gleichheitszeichen und Anführungszeichen keine PHP / SQL-Injection verhindern? - PHP, SQL, SQL-Injection

Kann es nicht zulassen, dass Leerzeichen, Gleichheitszeichen und Anführungszeichen die PHP / SQL-Injektion verhindern? - PHP, SQL, SQL-Injektion

Ich habe mich nur gefragt, ob Sie sich dann, wenn Sie den Benutzer darauf beschränken, nur Buchstaben und Zahlen eingeben zu können, vollständig vor einer Injektion schützen würden.

Antworten:

4 für die Antwort № 1

Das hängt davon ab, wie Sie Buchstaben und Zahlen definieren. Es gibt bestimmte Unicode-Zeichen, die zur SQL-Injection führen können. Dies wird manchmal als SQL-Schmuggel.

Es gibt Fälle, in denen SQL Injections dieimplizite Konvertierung von Unicode-Homoglyphen aus Unicode-Zeichenfolgetypen (NCHAR, NVARCHAR) zu Zeichenfolgetypen (CHAR, VARCHAR). Ein Charakter wie z as ʼ (U + 02BC) in NVARCHAR kann durch die Fluchtroutine und schlüpfen wird in VARCHAR in "(U + 0027) übersetzt, was zu einer SQL führen kann Injektion, wenn eine solche Zeichenfolge zum Erstellen einer SQL-Anweisung verwendet wird dynamisch.

Ihre Validierung ist jedoch ziemlich streng (nur Zeichen aus dem Grundlegende lateinische Unicode-Block- und Unicode-Whitespace-Zeichen) und ich Ich kann mir keinen Fall vorstellen, in dem dies fehlschlagen würde.

https://security.stackexchange.com/a/54958

Vorbereitete Stellungnahmen /Parametrisierte Abfragen bieten den besten Schutz gegen SQL-Injection. Wenn der zulässige Zeichensatz in späteren Jahren um eine Änderung der Anforderungen erweitert wird, sind der Person, die die Änderung vornimmt, möglicherweise die Sicherheitsauswirkungen der Zulassung zusätzlicher Zeichen nicht bekannt.


0 für die Antwort № 2

Für MySQL können Sie Ihren String mit entkommen mysql_real_escape_string() oder so. Tatsächlich ist es in Ordnung, wenn nur etwas Buchstaben (A-Z) und Ziffern (0-9) enthält. Es geht jedoch darum, für jede Variable, die Sie vom Benutzer erhalten, den richtigen Filter zu haben.


0 für die Antwort № 3
  1. Das macht keinen Sinn.
  2. Es ist nutzlos.

Selbst wenn es funktionieren würde, wäre es nutzlos und falsch.

Dynamische SQL-Erstellung sollte niemals mit Benutzereingaben und deren Validierung verbunden werden. Es gibt bereits Regeln für die sichere SQL-Erstellung. Das funktioniert für JEDE Daten, nicht nur für künstlich begrenzte Teilmengen.

In einer sanely Anwendungsdatenspeicherschicht entworfen sollte von der Benutzereingabeverarbeitung getrennt werden. Und sollte in der Lage sein, alle Daten zu verarbeiten, unabhängig von der Quelle oder den Launen der Entwickler.