Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Zeichenfolgen in SQL Server-Abfragen mit PHP sicher maskieren?

Wie kann ich Zeichenfolgen in SQL Server-Abfragen mit PHP sicher maskieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-09 02:05:14202Durchsuche

How Can I Safely Escape Strings in SQL Server Queries Using PHP?

Zeichenfolgen in SQL Server mit PHP maskieren: Eine umfassende Anleitung

Bei der Arbeit mit SQL Server mit PHP ist es wichtig, Ihre Daten davor zu schützen SQL-Injection-Angriffe durch ordnungsgemäßes Escapen von Zeichenfolgen. Dies ist eine Technik, um zu verhindern, dass böswillige Eingaben als SQL-Befehle interpretiert werden.

Alternative zu mysql_real_escape_string()

Im Gegensatz zu MySQL bietet SQL Server keine integrierte Funktion Funktion äquivalent zu mysql_real_escape_string().

Enter addslashes()

addslashes() ist eine PHP-Funktion, die oft als mögliche Alternative zum String-Escape in Betracht gezogen wird. Es ist jedoch wichtig zu beachten, dass addslashes() für die Verwendung mit SQL Server-Datenbanken nicht vollständig geeignet ist.

Eine robustere Lösung

Die ideale Lösung ist die manuelle Codierung die Daten als Hex-Bytestring. Hier ist ein Codeausschnitt zur Orientierung:

$unpacked = unpack('H*hex', $data);
mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (0x' . $unpacked['hex'] . ')
');

Abstraktion für wiederverwendbares Escaping

Um den Escape-Prozess zu vereinfachen und wiederzuverwenden, können Sie eine benutzerdefinierte Funktion wie diese erstellen:

function mssql_escape($data) {
    if(is_numeric($data))
        return $data;
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}

mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (' . mssql_escape($somevalue) . ')
');

Alternative zu mysql_error()

Zur Fehlerbehandlung bietet SQL Server mssql_get_last_message() als Alternative zu mysql_error().

Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen in SQL Server-Abfragen mit PHP sicher maskieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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