Heim > Datenbank > MySQL-Tutorial > Kann SQL-Injection „mysql_real_escape_string()' unter bestimmten Zeichensatzbedingungen umgehen?

Kann SQL-Injection „mysql_real_escape_string()' unter bestimmten Zeichensatzbedingungen umgehen?

Susan Sarandon
Freigeben: 2025-01-25 21:31:10
Original
633 Leute haben es durchsucht

Can SQL Injection Bypass `mysql_real_escape_string()` Under Specific Character Set Conditions?

In einer bestimmten Situation

SQL -Injektion mysql_real_escape_string() Obwohl

SQL -Injektionsanfälligkeiten beseitigen können, kann dies in einigen Sonderfällen weiterhin umgangen werden.

mysql_real_escape_string() Sicherheitsanalyse

In einigen Szenarien kann der Angreifer einen Defekt von verwenden, der ausgewählt wird, um den Zeichensatz von ASCII -Zeichen gleichzeitig zu unterstützen (wie GBK, SJKs).

Der Angreifer kann eine effektive Last konstruieren, die eine ungültige Multi -Sequenz -Sequenz enthält (z. B. XBFX27). Daher wird SQL beim Einfügen in die Abfrage injiziert. mysql_real_escape_string()

Beispiel

mysql_real_escape_string()

Betrachten Sie den folgenden PHP -Code:

Wenn der Angreifer den Wert von

auf

festlegt, kann er den Schutz von

umgehen und alle Zeilen in der Tabelle abrufen.
<code class="language-php">$login = mysql_real_escape_string($_POST['login']);
$password = mysql_real_escape_string($_POST['password']);

$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";</code>
Nach dem Login kopieren

Linderung von Messungen $_POST['login'] \xbf\x27 OR 1=1 /* mysql_real_escape_string() Um diese Sicherheitsanfälligkeit zu lindern, stellen Sie sicher:

Upgrade auf eine neuere MySQL -Version: Die neuere MySQL -Version (z. B. MySQL 5.1) enthält Reparaturverfahren für dieses spezifische Problem.

Verwenden Sie sichere Zeichensätze:

Verwenden Sie einen Zeichensatz nicht unterstützt und Zeichensatz als gültiges Zeichen (z. B. UTF8, Latin1).
  • Simulation vor -prozessierende Aussagen in PDO: pdo :: atmulat_prepares ist auf false eingestellt, um die Verwendung realer Vorverarbeitungssätze zu erzwingen.
  • Stellen Sie den Zeichensatz korrekt ein:
  • Verwenden Sie den Parameter oder pdo dsn Zeichensatz, um den Zeichensatz der Datenbankverbindung festzulegen.
  • Verwenden Sie den SQL -Modus 'no_backslash_escapes' (vorsichtig):
  • Dieser SQL -Modus kann verhindern, dass wir effektive Zeichen im Drehungsprozess erstellen, wodurch diese spezifische Sicherheitsanfälligkeit verringert wird. Bitte achten Sie auf mögliche Nebenwirkungen.

Das obige ist der detaillierte Inhalt vonKann SQL-Injection „mysql_real_escape_string()' unter bestimmten Zeichensatzbedingungen umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage