Start · Sprachen · PHP · Referenz · cubrid_real_escape_string

cubrid_real_escape_string

Funktion

Maskiert Sonderzeichen in einem String, um ihn sicher in einem SQL-Statement für eine CUBRID-Datenbank verwenden zu können.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_real_escape_string(string $unescaped_string, resource $conn_identifier): string

Beschreibung

cubrid_real_escape_string() schützt SQL-Statements vor unerwünschten oder gefährlichen Zeichenfolgen, indem es bestimmte Sonderzeichen im übergebenen String mit einem Backslash escaped. Die Funktion berücksichtigt dabei den aktuellen Zeichensatz der Datenbankverbindung.

Folgende Zeichen werden maskiert: \x00 (NULL-Byte), \n, \r, \, ', " und \x1a (Steuerzeichen). Damit verhindert sie SQL-Injection-Angriffe, bei denen ein Angreifer durch manipulierte Eingaben die Struktur eines SQL-Statements verändert.

Die Funktion setzt eine aktive CUBRID-Datenbankverbindung voraus. Es ist wichtig, den Rückgabewert im SQL-Statement in Anführungszeichen einzuschließen, da die Funktion selbst keine Anführungszeichen hinzufügt. Für neue Anwendungen sollten bevorzugt vorbereitete Statements (Prepared Statements) verwendet werden, da diese eine strukturell sicherere Alternative darstellen.

Diese Funktion ist das CUBRID-Äquivalent zu mysqli_real_escape_string() und sollte immer dann eingesetzt werden, wenn Benutzereingaben direkt in SQL-Strings eingebaut werden müssen und Prepared Statements nicht zur Verfügung stehen.

Parameter

Name Typ Default Beschreibung
$unescaped_string Pflicht string Der zu maskierende String, z. B. eine unsichere Benutzereingabe, die in ein SQL-Statement eingebaut werden soll.
$conn_identifier Pflicht resource Die CUBRID-Datenbankverbindung, die mit cubrid_connect() oder cubrid_connect_with_url() geöffnet wurde. Der Zeichensatz der Verbindung wird beim Escaping berücksichtigt.

Rückgabewert

Typ
string
Beschreibung
Gibt den maskierten String zurück, in dem alle relevanten Sonderzeichen mit einem Backslash versehen wurden. Der Rückgabewert kann sicher in ein SQL-Statement eingebettet werden, sofern er in Anführungszeichen eingeschlossen ist.

Beispiele

Benutzereingabe sicher in SQL-Statement einbauen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

// Benutzereingabe (könnte SQL-Injection enthalten)
$userInput = "O'Reilly OR 1=1 --";

// Eingabe maskieren
$safeInput = cubrid_real_escape_string($userInput, $conn);

// Sicheres SQL-Statement zusammenstellen
$sql = "SELECT * FROM authors WHERE name = '" . $safeInput . "'";
echo $sql;
// SELECT * FROM authors WHERE name = 'O\'Reilly OR 1=1 --'

cubrid_disconnect($conn);
SELECT * FROM authors WHERE name = 'O\'Reilly OR 1=1 --'

Datensatz sicher einfügen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

$name    = cubrid_real_escape_string($_POST['name'],    $conn);
$comment = cubrid_real_escape_string($_POST['comment'], $conn);

$sql = "INSERT INTO comments (name, comment) VALUES ('$name', '$comment')";

$result = cubrid_execute($conn, $sql);
if ($result) {
    echo 'Datensatz erfolgreich eingefügt.';
} else {
    echo 'Fehler: ' . cubrid_error($conn);
}

cubrid_disconnect($conn);
Datensatz erfolgreich eingefügt.

// Wichtig · Fallstricke

Sicherheitshinweis: cubrid_real_escape_string() schützt zuverlässig vor SQL-Injection, wenn die maskierten Werte stets in Anführungszeichen eingeschlossen werden. Ohne Anführungszeichen ist der Schutz unvollständig.

Empfehlung: Für neue Projekte sollten Prepared Statements bevorzugt werden, da sie strukturell sicherer sind und nicht von der korrekten Anwendung des Escapings abhängen. cubrid_real_escape_string() ist vor allem für die Pflege bestehender Codebasis relevant.

Zeichensatz: Die Funktion berücksichtigt den Zeichensatz der übergebenen Verbindung. Ein falsch gesetzter Zeichensatz kann dazu führen, dass Multibyte-Zeichen nicht korrekt maskiert werden und Sicherheitslücken entstehen.