CMS und Sicherheit
thom
- php
0 _roro0 dedlfix0 Johannes Zeller
Guten Abend!
Habe ein kleines CMS programmiert und wollte euch bezüglich Sicherheit etwas fragen.
1.) Die User des CMS müssen sich authentifizieren, das Passwort steht als md5-hash in der Datenbank.
2.) Damit nur registrierte User das CMS benutzen können, wird eine Session verwendet, die Session-ID wird über Cookies oder die URL übergeben.
3.) GET-Parameter an einen SQL-Query werden mit mysql_real_escape_string() behandelt, um gegen SQL-Injections geschützt zu sein.
4.) Die session_id wird mit strip_tags() gegen XSS-Angriffe behandelt.
Wenn mir jemand mit Ergänzungen, Verbesserungen oder Kommentaren zu meinen Sicherheitsvorkehrungen helfen kann, bin ich dankbar.
Schönen Abend noch, thom
moin,
3.) GET-Parameter an einen SQL-Query werden mit mysql_real_escape_string() behandelt, um gegen SQL-Injections geschützt zu sein.
Verdächtig. Unabhängig von "mysql_real_escape_string()" solltest Du selbst die Kontrolle darüber haben, welche Parameter es geben darf und welche Werte diese annehmen dürfen.
Ich hatte diesbezüglich vor vielen Jahren, als PERL-Anfänger, einmal ein Sicherheitsproblem, das war zwar nicht weiter tragisch, aber lehrreich.
--roro
Hallo Rolf,
Verdächtig. Unabhängig von "mysql_real_escape_string()" solltest Du selbst die Kontrolle darüber haben, welche Parameter es geben darf und welche Werte diese annehmen dürfen.
Nein, mysql_real_escape_string() ist schon die richtige Funktion für MySQL-Querys.
Gruß,
Johannes
Hell-O!
Verdächtig. Unabhängig von "mysql_real_escape_string()" solltest Du selbst die Kontrolle darüber haben, welche Parameter es geben darf und welche Werte diese annehmen dürfen.
Nein, mysql_real_escape_string() ist schon die richtige Funktion für MySQL-Querys.
Das hat Rolf ja auch nicht bestritten, ihm ging es eher darum, dass im Script vor einer Verarbeitung der Daten geprüft werden sollte, welche Parameter übermittelt wurden, ob sie zulässig sind und ob sie einen gültigen Wert enthalten. Und dabei hilft mysql_real_escape_string kein Stück weiter.
Siechfred
echo $begrüßung;
4.) Die session_id wird mit strip_tags() gegen XSS-Angriffe behandelt.
Warum dieses? An welchen Stellen gelangt die Session-ID in andere Kontexte? An diesen Stellen soll sie kontextgerecht maskiert werden. Das gilt für alle Arten von Daten.
Natürlich ist es auch nicht verkehrt, bereits bei der Entgegennahme der Daten diese auf gültige Werte zu prüfen. Die Behandlung beim Kontextwechsel sollte aber unabhängig von dieser Prüfung nicht vergessen werden.
echo "$verabschiedung $name";
Hallo thom,
Wenn mir jemand mit Ergänzungen, Verbesserungen oder Kommentaren zu meinen Sicherheitsvorkehrungen helfen kann, bin ich dankbar.
Es ist gut, dass du dir Gedanken über die Sicherheit deiner Software machst. Aber Sicherheit erzielt man nicht dadurch, dass man Checklisten von konkreten Problemen abarbeitet. Wenn du eine sichere Anwendung schreiben willst, musst du den Sicherheitsgedanken bei _allen_ Sachen, die du implementierst im Hinterkopf behalten und beim Entwickeln fortwährend mit bedenken, ob deine Lösungen aus Sicherheitssicht problematisch sein könnten.
Viele Grüße,
Johannes