Signatur
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
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);
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);
// 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.