Hallo,
nachdem ich mir nun ein paar nette Sachen zusammengebastelt habe die (jedenfalls auf meinem PC mit XAMPP) auch fehlerfrei laufen, wollte ich mir nun noch ein paar Informationen zum Thema Sicherheit einholen - möchte ja nicht irgendwelche unnötigen Sicherheitslücken wenn ich mal was online stelle.
Jetzt hab ich mir schon einiges angelesen und dennoch einige Fragen um sicherzugehen, dass ich auch alles richtig verstanden habe.
1. MySQLi und Prepared Statements.
Ich habe mir angelesen, dass durch MySQLi in Verbindung mit den Prepared Statements keine Möglichkeit besteht irgendeinen Schädlichen Code in der Datenbankabfrage auszuführen, früher musste man alle Eingaben des Nutzers vor dem Ausführen in der DB auf etwaige böse Zeichen prüfen, jetzt sei das nicht mehr so, weil im Grunde erst die Anfrage an den Server geschickt wird (Vorbereitet) und der Server danach nur noch die Platzhalter ersetzt.
Ist das so wirklich korrekt? Oder muss ich da doch irgendetwas beachten, irgendwelche Ausnahmefälle?
2. Suchmaschinenfreundliche URLs
Ich habe mir, weils schick aussieht und so nicht jeder direkt erkennt, es handelt sich um php diese schicken URLs gemacht wie example.com/Site/Welcome statt example.com/index.php?Site=Welcome. Funktioniert sogar tadellos.
Nun las ich auch dazu, dass es dort Sicherheitslücken geben könnte (der Benutzer kann ja strenggenommen alles eingeben) "sichern" tu ich das im Moment nur wie folgt:
Einmal mit: stripslashes (wird auf alle $_POST, $_GET, $_REQUEST, $_SERVER['REQUEST_URI'] etc. angewendet)
und mit: preg_replace('/[^a-zA-Z0-9\/_-]/', '', $url) so das eben nur noch bestimmte Zeichen zugelassen werden, bzw. alle die ich nicht brauche/in keiner URL vorkommen werden, entfernt werden.
Ist das ausreichend oder muss ich diesbezüglich vielleicht mehr beachten?
3. Dateiaufruf verhindern oder nicht?
Auf einigen Seiten habe ich gelesen, dass alle Dateien die includet werden sollen, vor direktem Aufruf geschützt werden sollen. Wie man das aber genau macht (ausser mit .htaccess) habe ich nicht rausgefunden. Außerdem weiß ich auch nicht ob das noch aktuell ist (diese Aussagen sind alle schon einige Jahre alt).
Bei mir sieht das im Moment so aus: Es wird alles von der index.php aus geregelt, dort wird nur die Hauptklasse (die ich immer brauche) includet, alles andere befindet sich auch in eigenen Klassen-Dateien. Wenn ich so eine Klassen-Datei aufrufe, dann passiert ja im Grunde nichts (wie auch, werden ja keinerlei Paramter übergeben mit denen die Klasse arbeiten könnte). Wie sieht das also aus?
4. Seite selber auf Sicherheitslücken testen
Überall las ich zu dem Thema, man soll seine Seite selbst auf alle möglichen Lücken testen. Aber wie mache ich das? Ich bin ja keiner der den ganzen Tag versucht fremde Seiten lahmzulegen, hab also keine Kentniss darüber.
Bisher fand ich nur so einen Javascript-Beispiel (n Alert) gefunden das man in der URL eingeben könnte - passiert bei mir aber nichts (Ausgabe mit var_dump() ergibt dann string(30) "Start3Cscript3Ealert27doof273C").
Wie genau prüf ich denn also meine Anwendungen auf Sicherheitslücken selber?
5. Ich bin auch dankbar für alle anderen Tipps, Infos, Erklärungsseiten/Videos, ...