PHP Security (SQL Injection, XSS)
Meininger
- php
0 suit0 Sven Rautenberg
Ich habe einen Studenten den Auftrag erteilt, meine PHP-Webseite sicherer zu gestalten. Er hat (mit meiner Erlaubnis) innerhalb von paar Minuten meine Wesbeite (Datenbank) hacken können, als Nachweis, dass er Ahnung davon hat.
Er hat mir versprochen, dass er die Seite sicherer gestalten wird. Aus 2-3 Tagen wurden 7 Tage und jetzt sind fast 2 Wochen vorbei.
Irgendwie habe ich das Gefühl, dass er nur hacken kann und auch nicht mehr.
Da ich nur wenig von PHP Ahnung habe, muss ich ja irgendwie kontrollieren, ob er es auch sicherer gestaltet hat.
Meine konkrete Frage: wo wird hauptsächlich was optimiert? In der Datenbank oder im Script der betreffenden Webseiten?
Gibt es eine Möglichkeit, selber auch nachzuschauen, wo was gemacht wurde? Ich meine, für SQL Injection Schutzt nutzt man sicherlich bestimmte Script Worte. Wenn man danach sucht, wird man wahrscheinlich fündig.
Meine konkrete Frage: wo wird hauptsächlich was optimiert? In der Datenbank oder im Script der betreffenden Webseiten?
Ich vermute vorrangig in den Scripten.
Gibt es eine Möglichkeit, selber auch nachzuschauen, wo was gemacht wurde?
Erzeuge eine Differenz aus altem und neuen Code (z.B. mit Werkzeugen wie WinMerge).
Ich meine, für SQL Injection Schutzt nutzt man sicherlich bestimmte Script Worte.
Bestimmte typische Merkmale lassen auf einen Injectionversuch schließen - im Code selbst sieht man das aber idR. nicht, wenn dann im Zugriffslog des Webservers.
Moin!
Ich habe einen Studenten den Auftrag erteilt, meine PHP-Webseite sicherer zu gestalten. Er hat (mit meiner Erlaubnis) innerhalb von paar Minuten meine Wesbeite (Datenbank) hacken können, als Nachweis, dass er Ahnung davon hat.
Er hat mir versprochen, dass er die Seite sicherer gestalten wird. Aus 2-3 Tagen wurden 7 Tage und jetzt sind fast 2 Wochen vorbei.
Irgendwie habe ich das Gefühl, dass er nur hacken kann und auch nicht mehr.
Klar, eine Sicherheitslücke irgendwie auszunutzen geht einfacher, als diese Lücke dann auch vernünftig zu schließen. Wobei sicherlich anzunehmen ist, dass es sich hier nicht nur um eine Klasse von Sicherheitslücken handelt, sondern alle möglichen Problemklassen gemeinsam auftreten, und das unstimmige Gesamtkonzept erst einmal vernünftig entwirrt werden muss, bevor man vernünftig Maßnahmen ergreifen kann.
Da ich nur wenig von PHP Ahnung habe, muss ich ja irgendwie kontrollieren, ob er es auch sicherer gestaltet hat.
Hast du die Seite denn gebaut, oder auch nur in Auftrag gegeben?
Wenn du sie gebaut hast, solltest du dir in einem Abschlußgespräch mindestens beispielhaft erklären lassen, wo du Unsicherheiten eingebaut hast - sonst machst du das künftig wieder so falsch.
Wenn du die Seite eingekauft hast, oder fertige Software benutzt hast, dann hingegen kann die Aufgabe, die Seite sicherer zu machen, ziemlich aufwendig werden.
Für fertige Software braucht man im Prinzip das passende Update, was die Lücke behebt. Selbst was zu schreiben und ggf. beim Hersteller einzureichen und/oder die Lücke zu melden und beheben zu lassen ist ein zeitaufwendiger Prozess.
Dasselbe gilt auch für den Fall, dass du selbst oder ein von dir beauftragter Programmierer eigene Skripte geschrieben haben - nur kann man dann dem Hersteller keine Lücke melden und auf den Patch warten, sondern muss wirklich selbst aktiv werden.
Meine konkrete Frage: wo wird hauptsächlich was optimiert? In der Datenbank oder im Script der betreffenden Webseiten?
Im Skript. Die Datenbank kriegt nur ein paar Daten ab, speichert die und liefert sie auf Anfrage wieder aus.
Gibt es eine Möglichkeit, selber auch nachzuschauen, wo was gemacht wurde? Ich meine, für SQL Injection Schutzt nutzt man sicherlich bestimmte Script Worte. Wenn man danach sucht, wird man wahrscheinlich fündig.
Lies den Artikel über Kontextwechsel und deren Behandlung. Da ist für PHP alles abgedeckt, was man beachten muss, und was in 99% aller Sicherheitslücken doch mißachtet wurde. http://aktuell.de.selfhtml.org/artikel/php/kontextwechsel/
Die dort genannten Funktionen müssen hinterher irgendwo in deinen Skripten auftauchen. Wenn nicht, ist was (noch) faul.
- Sven Rautenberg