Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicherheit auf Webseiten!
chinmoku
06.04.2005, 15:40
Hallöchen,
ich versuche mich ja grad ein bissle im Webdesign. Habe Tutorials verschlungen etc. aber auf keine Seite wird erklärt, welche Sicherheiten man in Webseiten einbauen kann/sollte.
Wie soll ein Noob denn wissen, welche Sachen man beachten sollte (in Sachen Sicherheit, wenn man eine Seite "bauen" möchte, die vllt später mal recht gut besucht wird!
Man will ja auch nicht gehackt etc. werden.
Worauf sollte man achten, wenn man zum Beispiel ein Log In Script bastelt, sodass die Userchen auch sicher sein können, dass ihre Daten nicht missbraucht werden.
Worauf sollte man generell achten, wenn es um die Sicherheit geht? ^^
Chocwise
06.04.2005, 16:08
Hallöchen,
ich versuche mich ja grad ein bissle im Webdesign. Habe Tutorials verschlungen etc. aber auf keine Seite wird erklärt, welche Sicherheiten man in Webseiten einbauen kann/sollte.
Wie soll ein Noob denn wissen, welche Sachen man beachten sollte (in Sachen Sicherheit, wenn man eine Seite "bauen" möchte, die vllt später mal recht gut besucht wird!
Man will ja auch nicht gehackt etc. werden.
Worauf sollte man achten, wenn man zum Beispiel ein Log In Script bastelt, sodass die Userchen auch sicher sein können, dass ihre Daten nicht missbraucht werden.
Worauf sollte man generell achten, wenn es um die Sicherheit geht? ^^
Puh, das kann man so pauschal nicht schnell zusammenfassen. :D
Da gibt es wirklich massig Details.
Nur soviel als Basis:
- Du solltest immer aufpassen das man mit deinen PHP-Scripten nicht auf Dateien zugreifen kann auf die man nicht zugreifen sollte. Stichwort: Ungesicherte include-Funktionen.
- Du solltest versuchen zu vermeiden das man HTML oder JavaScript-Code in die Page injizieren kann. Das ist zumindest dann wichtig, wenn du auf deiner Page mit Cookies arbeitest in denen z.B. die Logins gespeichert werden.
- Userpasswörter solltest du nicht als Klartext in der datenbank speichern. immer verschlüsseln mit MD5 z.B..
- Versuch mit abgeschalteten register_globals zu arbeiten. Das hilft das Injizieren von Code zu verhindern.
- Versuch ein guter PHP-Programmierer zu werden und dann deine eigenen Scripte zu schreiben. Sicherheitslücken in Fremdscripten sind wohlbekannt unter Scriptkiddies. Und dadurch das Scriptkiddies diese Sicherheitslücken kennen, wäre deine Page, welche mit Fremdscripten bestückt ist, wesentlich angreifbarer, als wenn du nur mit eigenen Scripten arbeitest. Denn die Funktionsweisen deiner eigenen Scripte kennen die Scriptkiddies nicht und wissen somit auch nicht, wie sie gezielt angreifen können.
Orkkrieger
06.04.2005, 17:12
jojo, sicherheit mit php fremskripts, da habsch ne nette geschichte...
hab letztens in nem post in einem anderen forum gelesen, wo sich jemand gewundert hat, dass sein gästebuch und sein counter auf einmal resettet worden waren, und die mysql einträge futsch waren.
tja, erst gedacht es liegt am provider, alles wieder hergestellt und am nächsten tag wars wieder weg...also hat er mal die referrer listen übern script von sich angeschaut und doch glatt rausgefunden, dass ein google bot sich die adresse gemerkt hatte, in der der admin nick und das pw übergeben wurden...
nun konnte sich also jeder über google im admin bereich einloggen...
leider gibt es ne ganze menge scripts, in denen die logindaten per GET übergeben werden...
da würde ich besonders aufpassen, das is eine der größten sicherheitslücken, die es imo gibt...
noch ein tip von mir...:
ich halte nichts von php gesicherten admin bereichen und so, da passieren zu leicht irgendwelche programmierfehler...für den anfang tut es auch ein .htaccess schutz...das is zwar u.U. nich ganz so komfortabel, weil man es nich an php scripts anknüpfen kann, aber es bietet imo einen sehr zuverlässigen schutz ;)
Hm, dazu mal 'ne Frage:
Ich habe mir letztens für mein CMS für den Admin-Bereich einen relativ simplen Php-Cookie-Passwort-Schutz gebaut:
Das Login-Formular legt den md5-Hash des Passworts im Cookie ab. Jede datei des Admin-Bereichs includet eine Datei, in der geprüft wird, ob der Cookie mit dem md5-Hash des Passwortes identisch ist. ie sicher oder unsicher ist das?
Wahrscheinlich kann ich jetzt gleich was neues proggen...
Da musst du dann eben auf die Vorsicht des Users vertrauen - da man die Cookies meist im Browser bearbeiten kann, könnte sich jemand, der zufällig am PC des Admins ist (falls der sich z.B. an einem öffentlichen PC in Schule, Büro oder Internetcafe einloggt), in den Cookie gucken, sich den Hash notieren und bei sich selbst dann eben einen Cookie mit diesem Hash setzen bzw. den Hash in seinem Cookie ändern. Also auf jeden Fall ein Logout einbauen, dass den Cookie wieder löscht ... dann sollte es nicht unbedingt große Sicherheitsprobleme geben. Allerdings halte ich da Sessions doch für sicherer, auch wenn ich im Grunde keine Ahnung hab, was man da wieder falsch machen kann ^^"
Und sonst bevorzuge ich persönlich, wenn ich denn eben nicht z.B. den Usernamen für irgendetwas brauche, auch einfache .htaccess-Logins. Sind eben deutlich komfortabler und wohl auch sicherer.
Das CMS ist eigentlich nur für mich (und evtl. ein paar Freunde, aber nix großes eben). Ich bin da normalerweise vorsichtig genug, von daher sollte das gehen.
Auf jedenfall sollte man Sachen wie main.php?site=tpl/bla.php verhindern.
Sowas kann ganz einfach zu Sachen wie main.php?site=/etc/passwd - das würde die Password/User Datei von Linux/*NIX/ anzeigen, nicht so toll. :/
Also am besten Dateien die geöffnet werden nicht über die URL laden.
Und bei Usereingaben immer HTML Chars escapen, sonst kann man ganz einfach die Cookies der User (auch vom Admin) auslesen.
Auf jedenfall sollte man Sachen wie main.php?site=tpl/bla.php verhindern.
Sowas kann ganz einfach zu Sachen wie main.php?site=/etc/passwd - das würde die Password/User Datei von Linux/*NIX/ anzeigen, nicht so toll. :/
Also am besten Dateien die geöffnet werden nicht über die URL laden.
Und bei Usereingaben immer HTML Chars escapen, sonst kann man ganz einfach die Cookies der User (auch vom Admin) auslesen.
Meinst du jetzt Angaben, die gespeichert werden (Gästebücher usw.) oder alle? Wenn alle, wie soll das Admin-Cookie-auslesen da gehen?
Und die Seiten sind eh in einer Datenbank abgespeichert, die werden über index.php?id=1 aufgerufen (und ja, ich habe SQL-Injections vorgebeugt).
dead_orc
06.04.2005, 18:42
Ich würde dir noch raten die Fehlermeldungen mit "error_reporting(0);" auszuschalten wenn du das Projekt veröffentlichst, da dadurch evtl. sensible Daten ausgegeben werden können...
chinmoku
06.04.2005, 22:30
Danke schon einmal für die Antworten, aber da wären einige Sachen, die ich net versteh ^^
@ dead_orc
Meintest du mich mit
error_reporting(0);
Wenn ja, was ist das ^^? Und wie schaltet man das aus?
Die ähnliche Frage zu
register_globals(?)
Wie schaltet man das ab und was ist das xD?
Chocwise
06.04.2005, 23:01
@ chinmoku:
error_reporting(0); bedeutet das keine PHP Fehlermeldungen ausgegeben werden wenn sich welche im Script ereignen.
Nur ist das nicht sonderlich nützlich wenn man als Tüftler an Scripts rumfummeln will, da man in Fehlerfällen absolut kein Feedback bekommt.
Wenn aber ein Script perfekt ist und nicht zu erwarten ist das sich da Fehler ereignen, kann man darauf zurückgreifen.
die Funktion muss AFAIK ganz oben in der Scriptseite stehen.
register_globals = Off bewirkt das Variablen die z.B. per URL an ein Script übergeben werden, nur über einen speziellen Bezeichner vom Script entgegen genommen werden können.
Ruft man z.B.
http://test.tld/script.php?variable=test
auf und register_globals ist aus, kann man auf die übergebene Variable nur über $_GET[variable] zurückgreifen. Andernfalls wäre auch $variable möglich.
So kann man Per Formular übergebene Variablen nur mit $_POST[variable] und per Cookie übertragene Variablen nur mit $_COOKIE[variable] entgegennehmen.
Die register_globals sind in den neueren PHP-Versionen standardmäßig aus. Sind sie es bei dir nicht und du möchtest dich dahingehend absichern, schreib in eine .htaccess-Datei:
php_flag register_globals off
Dadurch ist es Usern nicht länger möglich irgendwelchen Variablen, die nicht oder unzureichend im Script initialisiert und/oder definiert werden, über Post-, Get- oder Cookie-Methode eigene Werte zu geben.
Als PHP-Anfänger wäre es sehr gut, wenn du direkt mit deaktivierten register_globals arbeitest. Ich bin schon ein alter Knochen und hab zu lange mit aktivierten register_globals gearbeitet. Das Umlernen viel mir daher ziemlich schwer. ;)
dead_orc
07.04.2005, 11:32
Nur ist das nicht sonderlich nützlich wenn man als Tüftler an Scripts rumfummeln will, da man in Fehlerfällen absolut kein Feedback bekommt.
Öhm, habe ich das nicht geschrieben?
wenn du das Projekt veröffentlichst
:confused:
@chinmoku: Sry für Missverständnis ;) Du sollst natürlich nicht error_reporting(0); ausschalten, sonder die Fehlermeldungen ;)
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.