$_GET Sichern (SQL-Injection,...)

enrico2910

Grünschnabel
Hallo Leute,

Habe da mal eine Frage zum Thema $_GET-Variable sicher machen.

Da mysqli_real_escape_string anscheinend nicht bei $_GET-Variablen funktioniert bin ich auf der suche nach einer alternative und mir ist dazu etwas eingefallen. Nun wollte ich fragen ob das so funktioniert bevor ich meinen ganzen Code umbaue.

ich habe zum Beispiel diese Sache an meinem Link angehängt:

?kat=apple

Nun ziehe ich mir das via $_GET und speichere das in eine Variable.

PHP:
$kat = $_GET['kat'];

Nun wollte ich via str_replace alles ausschließen was mit einer SQL-Abfrage zu tun hat. So zum Beispiel:

PHP:
$ausschliesen = array('INSERT', 'SELECT', '*'); //Nur Beispiele
$kat = str_reaplace('$ausschliesen', '', $kat);

Würde das so funktionieren? Oder gibt es eine elegantere Lösung?

Liebe Grüße
Enrico
 
Aber wenn ich

PHP:
$kat = mysqli_real_escape_string($_GET['kat']);

eingebe, funktioniert meine Abfrage nicht mehr und ich bekomme keine Ausgabe mehr bei meiner Abfrage.

Liebe Grüße
Enrico
 
@enrico mysqli_real_escape_string benötigt 2 Parameter (siehe php.net).

PHP:
string mysqli_real_escape_string ( mysqli $link , string $escapestr )
 
Hallo Leute,

Habe meinen Fehler gefunden. Habe vorher vergessen die Datenbankverbindung einzutragen. So geht es nun:

PHP:
$kat = mysqli_real_escape_string($db, trim($_GET['kat']));

Aber bin ich nun sicher, vor bösen Mächten von außen ^^^^^^****?

Oder gibt es noch weitere tolle Möglichkeiten um meine Seite vor Angriffen zu schützen?

Liebe Grüße
Enrico
 
Hi,

wenn du Benutzereingaben auf deiner Seite ausgeben willst, dann immer mit htmlentities() absichern.
Somit hast du dann SQL-Injection und XSS abgesichert. Je nachdem ob XSRF für dich auch relevant ist, musst du das auch noch absichern. Das wird aber dann mehr Aufwand.

Zum Thema Sicherheit hab ich das hier gerade gefunden. Sieht interessant aus, habs selbst aber noch nicht gelesen ;)

Grüße,
BK
 
Zuletzt bearbeitet:
Zurück