Get Parameter sicher machen
Eingetragen von torfnase (1525)
am 23.05.2021 - 20:04 Uhr in
am 23.05.2021 - 20:04 Uhr in
Wenn ich einen GET-Parameter an die Datenbank weitergeben möchte, wie kann ich das sicher gestalten.
genauer sieht das so aus:
https://meine-domain.de?filter=123
und dann wird dieser GET Parameter $_GET['filter'] in einer SELECT Anfrage als WHERE-Condition angewendet, also ungefähr so:
$query = \Drupal::entityQuery('irgeneine-mysql-tabelle');
if ($_GET['filter'] != "") {
$query->condition('description__value', "%" . $_GET['filter'] . "%", 'LIKE');
}
Wie kann ich mich gegen eine SQL-Injection wirksam schützen oder sorgt drupal schon dafür ?
Gruß Berthold
- Anmelden oder Registrieren um Kommentare zu schreiben
Moinsen, bei korrekter
am 24.05.2021 - 07:46 Uhr
Moinsen,
bei korrekter Verwendung der Drupal DB API oder Entity API kümmert sich Drupal um SQL Injection.
Du kannst das anhand eines eingeschleusten SQL Befehls gegen eine Test- Datenbank überprüfen:
https://meine-domain.de?filter=123;DROP+TABLE+USERS
Allerdings kann es nicht schaden, GET Parameter selber vorab zu überprüfen. Z.Bsp.:
<?php
if ($_GET['filter'] != "" && is_numeric($_GET['filter'])) {
$query->condition('description__value', "%" . $_GET['filter'] . "%", 'LIKE');
}
else {
\Drupal::messenger()->addError('ungültige Eingabe!');
}
?>