Sicherheit ?

Vorstaedter

Benutzer
Beiträge
21
Hallo alle,
Ich bastele an einem Informationssystem zu einem speziellen Thema, welches jedermann zur Abfrage wie auch zur Eingabe von weiteren Informationen zur Verfügung stehen soll. Login wird nicht gefordert. Wer neue Informationen eingeben will wird per HTML5-Formular um das Ausfüllen mehrere Felder gebeten, die vom Typ Integer, Float und String sein können, wobei die Strings zwischen 30 und 100 Zeichen lang sind.
Per Input-Pattern beschränke ich die möglichen Eingaben auf sinnvolle Werte; bei den Strings ist das schwierig, da begrenze ich die eingebbaren Zeichen auf a-z, A-Z, dt. Sonderzeichen, €, Punkt, Komma und Leerzeichen.
Das ganze geht per POST an ein PHP-Script, wo die Eingaben mit Regulären Ausdrücken gleicher Struktur nochmals überprüft werden und dann in die Datenbank eingetragen werden.
Da ich mich bislang mit Sicherheitsfragen nur am Rande beschäftigt habe, bitte ich Euch um Hinweise auf zusätzliche Maßnahmen, die ich ggf. treffen sollte, damit nicht jeder Script-Kiddi meine Datenbank sabotieren kann. Ja, ich weiß, absolute Sicherheit geht nicht. Aber größtmögliche Sicherheit bei vertretbarem Aufwand ( Hobbyprogrammierer, Einzelkämpfer) möchte ich schon erreichen.
Wäre dankbar dafür, wenn Ihr mir das Ende des ein- oder anderen Fadens in die Hand gäbet, an dem ich mich dann weiter hangeln kann.
 
Werbung:
OK, hab ich gemacht. Das mit den prepared Staements ist gar nicht schwer, wenn man sich erstmal damit beschäftigt hat.
Ich glaub inzwischen, daß diese Art des Dateizugriffs fast einfacher zu handhaben ist als die Standardmethode mit mysqli_connect und mysqli_close, und das ohne Performance-Nachteile.
Muß eigentlich die Datenbank nach Einfügen und Ausführen eines prep. Statements noch mit mysqli_close oder irgendwie analog dazu geschlossen werden, oder ist das nicht nötig weil sie ja auch nicht geöffnet wurde ?
Und noch eine Frage zum Sicherheitsgewinn bei versuchten SQL-Injektions : Worin liegt eigentlich dieser Sicherheitszuwachs ? Es werden doch letztlich die gleichen Daten in die Datenbank geschrieben wie beim Standardverfahren. Was hindert bei prepared Statements den bösartigen Code daran, sei Schadpotential zu entfalten ?
Ist bestimmt ne Dumme Frage, aber wäre interessant, den Mechanismus zu verstehen.
 
Und nochmal generell zu meinem Sicherheitskonzept für das Eingabeformular :
1. Barriere : Input via HTML5-Eingabeformular wird mit "pattern" so eingeschränkt, daß nur zumindest syntaktisch richtige Eingaben erlaubt sind.
Programmtypische Zeichen wie z.B. < > ; werden dadurch ausgeschlossen.
2. Barriere : Das empfangende PHP-Script prüft anhand gleicher Kriterien mittels "preg_match", daß die Bedingungen wie unter 1 gefordert eingehalten sind.
3. Barriere : abspeichern mittels prepared Statements.

Haltet Ihr dieses Konzept für zu schwach, gerade richtig oder von Paranoia geprägt ?
Was würdet Ihr ggf. anders machen ?
 
Werbung:
Zurück
Oben