Einzelnen Beitrag anzeigen
  #6 (permalink)  
Alt 15-03-2014, 11:25
anihex
 Registrierter Benutzer
Links : Onlinestatus : anihex ist offline
Registriert seit: Feb 2014
Beiträge: 28
anihex befindet sich auf einem aufstrebenden Ast
Standard

Hi CptRiot,

Zum Thema Filterung:
Du hast in deinem Quelltext folgendes:
PHP-Code:
                                if (!empty($_GET['action'])) 
Du prüfst hier einfach nur, ob "action" gesetzt wurde. Aber nicht, ob "action" einen bestimmten Wert hat. Damit kann da praktisch alles stehen.
Du kannst das Problem recht elegant lösen.
Normalerweise muss man Variablen die über GET etc. kommen, prüfen ob sie gesetzt wurden und ob der Wert gültig ist.
Also in etwa so:
PHP-Code:
if ( (isset( $_POST"id" ])) && (is_int($_POST"id" ])) ) {
  
// Auf dem ersten Blick ist alles okay.
  
$ID $_POST"id" ];

Nun gibt es aber eine elegantere Lösung. Und zwar diese:
PHP-Code:
$ID filter_inputINPUT_POST"id"FILTER_VALIDATE_INT ); 
Die Variable $ID hat nun einen von 3 möglichen Werten:
- Wenn eine Zahl angegeben wurde: INT
- Wenn ein ungültiger Wert (z.B. eine Zeichenkette) angegeben wurde: false
- Wenn das Feld gar nicht übermittelt wurde: NULL

Nun musst du im Zweifelsfalle nur noch prüfen, ob $ID eine Zahl enthält.

Übrigens ... Du verwendest "action" um den zu löschenden Eintrag zu bestimmen. Ich denke nicht, dass das eine so gute Idee ist. Ich bin mir nichtmal sicher, ob das so gewollt ist. Nur mal so als Anmerkung.

Zum vormals 3ten Punkt:
Wenn du mit einer ID (eine Zahl) anstatt einer Überschrift (eine Zeichenkette) arbeitest, sollte der = Operator tadellos funktionieren.

Zum Login:
Dazu gleich 2 Dinge:
  1. MD5 ist nicht ratsam. Schon gar nicht ohne "Salz". Ich hoffe, ich verstoße jetzt gegen keine Foren-Regel. Daher an die Mods: Sollten die Links die ich hier poste, illegal sein oder gegen die Foren-Regeln verstoßen, entfernt sie bitte. Auf MD5Online kannst du einen MD5-Hash eingeben. Sollte dieser in der Datenbank der Seite gespeichert sein, liefert dir die Seite einen dazu passendes "Passwort". Viele gängige Passwörter wie "passwort", "123456" etc. sind eigentlich enthalten. Darüber hinaus ist auch die Anwendung von SHA1 nicht empfehlenswert. Auf FreeRainbowTables kannst du dir RainbowTables zu MD5 und SHA1 runterladen. Damit sind gängige Passwörter ziemlich schnell enttarnt. Doch selbst von der SHA2-Familie würde ich dir abraten. Denn MD5, SHA1 und die SHA2-Familie sind auf Geschwindigkeit ausgelegt. Das ist leider suboptimal wenn du Passwörter speichern willst. Gute Alternativen sind Hash-Algos, die auf Langsamkeit getrimmt sind. z.B. bcrypt (siehe: Schöner hashen mit bcrypt. Viel Spaß beim Lesen. ;-)
  2. Auch hier filterst du die Angaben nicht. Ein Angreifer könnte mühelos eine SQL-Injection durchführen. Dazu empfehle ich dir Allgemeines - Sicher programmieren - SQL-Injections Teil 1 auf Peterkropff.de
Ich hoffe, das konnte dir ein wenig helfen.
Weiterhin viel Erfolg.

~ Chris
Mit Zitat antworten