Sicherheit in php
Bene
- php
Hallo,
ich bin php Anfänger und habe folgende Fragen:
gibt es eine Möglichkeit wie Serverausfall, Ausfall des PHP-Moduls auf dem Server etc. dass mein php Code ( indem ja auch mysql Zugangsdaten stehen können ) im Quelltext der Webseite zu sehen sind oder ist das ausgeschlossen?
wenn es nicht ausgeschlossen ist, welche Sicherheitsvorkehrungen muss ich treffen.
besten Dank
algore2001
hi,
- gibt es eine Möglichkeit wie Serverausfall, Ausfall des PHP-Moduls auf dem Server etc. dass mein php Code ( indem ja auch mysql Zugangsdaten stehen können ) im Quelltext der Webseite zu sehen sind oder ist das ausgeschlossen?
ja, das ist möglich - wenn auch ziemlich unwahrscheinlich.
aber ein paar mal habe ich das auch schon im www gesehen.
- wenn es nicht ausgeschlossen ist, welche Sicherheitsvorkehrungen muss ich treffen.
wenn möglich, dateien mit solch sensiblen inhalten oberhalb des web root ablegen, und nur per include/require in die scripte einbinden.
dann sieht man im zweifelsfalle zwar, wo deine include-dateien liegen und wie sie heißen - kann sie aber nicht über HTTP aufrufen.
gruß,
wahsaga
Hello,
... kleine Ergänzungen dazu:
Zugangsdaten für Authentication wwenn es geht immer verschlüsseln. Dann kann der Finder die zwar eintippen, da sie aber wiederum verschlüsselt werden, passt der Vergleichwert nicht mehr.
Dem Universaluser für Dödel und Blah in einer Datenbank nur sehr eingeschränkte Datenbankrechte geben. Z.B. beim Konzept für die Datenbank auf physische Löschung durch diesen User verzichten, und die zu löschenden Sätze nur markieren. Markierte bei der normalen Anzeige so ausblenden, als wären sie gelöscht.
Nimm zum Einbinden von seniblen Funktionen und Daten nur Require. Wenn das schiefgeht, wird das Script abgebrochen mit der Fehlermeldung für die Zeile im Hauptscript, wo das Require steht.
Ein Include führt nicht zum Abbruch und außerdem wird bei Include der Fehlerfad rückverfolgt bis zur Zeile, an der der Fehler tatsächlich stattgefunden hat, also ggf. bis ins include. Include nimmt man daher für alle "normalen" Laufzeitfunktionen.
Dass PHP ausgefallen ist, habe ich persönlich nur bei den ganz alten Versionen (PHP 3 und die ersten 4er) erlebt. Die konnte man noch gelegentlich "abschießen".
Nimm für das Einbinden von HTML-Templates _kein_ include, sondern lade sie z.B. mit file_get_contents() oder fread() in eine Textvariable, die Du dann mit str_replace() parsen kannst, um Platzhalter darin auszutauschen. Erst, wenn aktive Inhalte (Funktionen) erforderlich werden, muss auch eine aktive Einbindefunktktion benutzt werden...
Außerdem führt diese "Templatetechnik" zu einer sauberen Trennung von HTML, CSS und PHP
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom.
Markierte bei der normalen Anzeige so ausblenden, als wären sie gelöscht.
Keine schlechte Idee. Aber stauen sich dann über die Zeit nicht unzählige "Leichen" an, die für diesen User und alle anderen zwar nicht sichtbar sind, aber dennoch Platz wegnehmen?
Gruß, Ashura
Hi Ashura,
Markierte bei der normalen Anzeige so ausblenden, als wären sie gelöscht.
Keine schlechte Idee. Aber stauen sich dann über die Zeit nicht unzählige "Leichen" an, die für diesen User und alle anderen zwar nicht sichtbar sind, aber dennoch Platz wegnehmen?
Hiergegen ließe sich eventuell insofern etwas machen, als dass man regelmäßig per CronJob die Datenbank durchgeht, als gelöscht markierte Datensätze exportiert, soll heißen irgendwo anders hin verlegt und die Datensätze dann physisch in der Datenbank wirklich löscht.
Damit wird ein übermäßiges Auftreten von Datensätzen-Leichen verhindert, die Datenbank bleibt performant und trotzdem sind alte Datensätze noch als "Backup" da (dass man sowieso regelmäßig ein komplettes Datenbackup ziehen sollte, jetzt mal außen vorgelassen...).
MfG, Dennis.
Hello,
Markierte bei der normalen Anzeige so ausblenden, als wären sie gelöscht.
Keine schlechte Idee. Aber stauen sich dann über die Zeit nicht unzählige "Leichen" an, die für diesen User und alle anderen zwar nicht sichtbar sind, aber dennoch Platz wegnehmen?
Hiergegen ließe sich eventuell insofern etwas machen, als dass man regelmäßig per CronJob die Datenbank durchgeht, als gelöscht markierte Datensätze exportiert, soll heißen irgendwo anders hin verlegt und die Datensätze dann physisch in der Datenbank wirklich löscht.
Damit wird ein übermäßiges Auftreten von Datensätzen-Leichen verhindert, die Datenbank bleibt performant und trotzdem sind alte Datensätze noch als "Backup" da (dass man sowieso regelmäßig ein komplettes Datenbackup ziehen sollte, jetzt mal außen vorgelassen...).
manche muss man als Anbieter demnächst (oder schon jetzt?) sogar eine Weile aufbewahren. Auch eine Änderungshistorie wird fällig werden. Wenn also ein "minder-privilegierter" Benutzer etwas ändert an wesentlichen Daten, dann muss man den vorherigen Stand für die Strafverfolgungsbehörden noch z.B. drei Monate aufbewahren. Wer das dann nicht tut, kann selber verknackt werden.
Hier sind "Diensteanbieter" angesprochen. Allerdigns stellt ein Forum oder ein Blog auch schon einen Dienst in diesem Sinne dar. Irgendwie muss die Festplattenindustrie doch gesponsert werden ;-)
Harzliche Grüße aus http://www.annerschbarrich.de
Tom