Wie sicher ist mein PHP-Quellcode auf dem Server?
Matthias
- php
Hallo
Wie sicher ist mein PHP-Quellcode auf dem Server?
Mir geht es dabei nicht um den Code an sich, sondern um eine in php umgesetzte Passwortabfrage. Der Status, ob man eingeloggt ist wird mit Formularen und input-hidden-tags und der Post-Methode an das nächste Dokument übergeben. Die Benutzernamen und Passwörter stehen in einer MySQL-Datenbank.
(Bitte nicht die Alternative .htaccess hinweisen, mir geht es hier wiklich um die Sicherheit dieser Variante.)
Ich kann mir folgende Sicherheitsrisiken vorstellen:
Kommt man an den unkompilierten php-Quellcode?
Kann man die mit POST gesendeten Variablen manipulieren?
Kann man in die MySQL-Datenbank einbrechen?
(Bei allen dreien: Wenn ja - wie leicht?)
matthias
abend,
Wie sicher ist mein PHP-Quellcode auf dem Server?
das liegt an dir ;)
Kommt man an den unkompilierten php-Quellcode?
folgender link beschäftigt sich mit der sicherheit von
php-datein und listet einige programme/module auf,
mit denen das obfuscaten oder bytecode compilen möglich
ist: http://www.dclp-faq.de/q/q-php-kompilieren.html
Kann man die mit POST gesendeten Variablen manipulieren?
Kann man in die MySQL-Datenbank einbrechen?
du musst unbedingt(!) vermeiden, vom user eingebenen sachen
direkt auszuwerten. integrierst du eine eingabe direkt in
eine sql-abfrage ist es - mit ein bißchen bemühen - nicht
schwierig deine DB zu plätten...
(Bei allen dreien: Wenn ja - wie leicht?)
liegt wiederum an dir ;)
mfg,
(tanz das)
Z.N.S.
Hallo,
(tanz das)
Z.N.S.
"Wie hört man sich das denn an?"
;-)
Gruß, Jan
Hallo,
Hallo,
(tanz das)
Z.N.S."Wie hört man sich das denn an?"
;-)
Gut, sehr gut, wie die ganze "Halber Mensch" [*] auch ;-).
MfG, Thomas
[*] http://www.danielaceglie.com/neubauten/en_lyrics_1.html#hal
Hallo,
"Wie hört man sich das denn an?"
;-)
Gut, sehr gut, wie die ganze "Halber Mensch" [*] auch ;-).
Ja, finde ich auch. Von den Neubautenfans hätte ich als Antwort aber eher "Das kann man sich nicht anhören, das ist doch meine DNS" erwartet.
Gruß, Jan
Hallo,
Ja, finde ich auch. Von den Neubautenfans hätte ich als Antwort aber eher "Das kann man sich nicht anhören, das ist doch meine DNS" erwartet.
Naja, hoerbar makroskopischer kommt da KRAFTWERK auf dem TOUR DE FRANCE Soundtrack daher:
ADRENALIN / ENDORPHIN / ELEKTROLYT / COENZYM
CARBOHYDRAT / PROTEIN / A B C D VITAMIN
Das und mehr laesst unser Z.N.S wohl tanzen ;-).
MfG, Thomas
Hallo Matthias,
Kommt man an den unkompilierten php-Quellcode?
Normalerweise nicht.
Kann man die mit POST gesendeten Variablen manipulieren?
Ja, kann man.
Kann man in die MySQL-Datenbank einbrechen?
Normarlwesie nicht.
(Bei allen dreien: Wenn ja - wie leicht?)
Bei PHP-Quellcode und MySQL-DB: Im Normalfall kann man davon ausgehen, dass diese sicher sind. Es gibt natürlich Sicherheitslücken in jeder Software und auszuschließen, dass jemand sich unbefugt Zutritt verschafft, kann man nicht, jedoch ist dies - bei korrekter Konfiguration und regelmäßigen Sicherheitsupdates - extrem unwarscheinlich. Was mir dagegen eher Sorgen macht, ist Dein Script an sich: Wie sicher ist dies programmiert? Dazu kann ich Dir natürlich keine Auskunft geben. Um die Sicherheit zu überprüfen, ist es hilfreich, sich in einen Angreifer hineinzuversetzen. Gehe davon aus, dass der Angreifer den kompletten Sourcecode des Scripts kennt (bis auf fest einprogrammierte Passwörter für Datenbanken o.ä.) und versuche mit diesem Wissen das Script auszutricksen. Wenn Dir das gelingt, dann ist das Script nicht sicher; wenn Dir dies jedoch nicht gelingt, ist dies schon mal ein gutes Zeichen. (allerdings keine Garantie, vielleicht ist jemand besser als Du...)
Zu den POST-Daten: Diese sind beliebig manipulierbar, da sie vom Client kommen. Du kannst Dich auf *nichts*, aber auch *gar nichts*, was vom Client an den Server kommt, verlassen, diese Daten, sind *beliebig* veränderbar. Zu Daten, die vom Client kommen, zählen u.a. URL-Parameter, POST-Daten, Cookies sowie alle Servervariablen, die mit HTTP_ anfangen. (HTTP_REFERER, HTTP_USER_AGENT, HTTP_ACCEPT_LANGUAGE, ...)
Viele Grüße,
Christian
Hallo,
um an deinen PHP Code zu kommen, muss jemand deinen FTP zugang benutzen.
|Kommt man an den unkompilierten php-Quellcode?
Nö,
|Kann man die mit POST gesendeten Variablen manipulieren?
Man kann ein eigenes Formular (auf dem PC) machen und die Eingaben dann schicken lassen.
Also nie sehr wichtige Daten mit hidden Feldern schicken (hidden: eingelogt ja bzw. nein)
|Kann man in die MySQL-Datenbank einbrechen?
Klar, die meisten usen myPHPAdmin ....
MFG
Andavos
Hallo!
um an deinen PHP Code zu kommen, muss jemand deinen FTP zugang benutzen.
muss nicht, viele Wege führen nach Rom ;-)
Man sollte z.B. nicht eigene Upload-Scripte upload.php nennen und ganz offen auf dem Server rumliegen lassen. Und bedenke dass Dein FTP-Passwort jedemal im Klartext übertragen wird, kann jeder dedr Zugriff auf eines der Netzwerke zwischen Dir und dem FTP-Server hat mitlesen.
|Kommt man an den unkompilierten php-Quellcode?
Nö,
Hä? Wohl eher als an kompilierten, oder?
|Kann man die mit POST gesendeten Variablen manipulieren?
Man kann ein eigenes Formular (auf dem PC) machen und die Eingaben dann schicken lassen.
Also nie sehr wichtige Daten mit hidden Feldern schicken (hidden: eingelogt ja bzw. nein)
Richtig. Und alles was Dein Browser an den Server sendet siehst Du hier: http://schroepl.net/cgi-bin/http_trace.pl
Wie Chistian schon sagte, _alle_ diese Daten sind nach Belieben manipulierbar, und das sidn die Daten die Dir der Webserver zur Vrerfügung stellt. Nur weil der Webserver diese Daten verwendet heißt das lange nicht dass Du ihnen vertrauen kannst.
|Kann man in die MySQL-Datenbank einbrechen?
Klar, die meisten usen myPHPAdmin ....
"benutzen" heißt das ;-)
Und das ist auch nur einer von vielen Wegen. Oft wird der Fehler gemacht dass die Datenbank nicht nur auf localhost erreichbar ist, sondern nach außen einen Port abhört, obwohl man das im Normalfall nicht braucht/will.
PHPMyAdmin sollte man _immer_ mit einem Passwort schützen!
Grüße
Andreas
Hallo,
Wie sicher ist mein PHP-Quellcode auf dem Server?
Ziemlich.
Der Status, ob man eingeloggt ist wird mit Formularen und input-hidden-tags und der Post-Methode an das nächste Dokument übergeben.
Das ist nicht sehr schlau.
Alles, was von der Benutzerseite kommt (also auch die Werte in einem
Formular, das mit POST uebermittelt wird) kann gefaelscht sein.
Wenn ich im HTML-Quellcode ein Hidden-Field entdecken wuerde
<input type="hidden" name="status" value="0">
dann wuerde mich das geradezu reizen, es mal mit value="1" zu versuchen...
Wahrscheinlich waeren Sessions etwas fuer Dich.
Vom Browser/Benutzer kommt nur die SessionID,
aber kritische Dinge (z.B. Status "eingeloggt"/"nicht eingeloggt")
sind nur auf dem Server gespeichert.
Lies mal das ganze Kapitel zur Sicherheit in der FAQ:
http://www.dclp-faq.de/ch/ch-security.html
(Auch der Rest der FAQ ist lesenswert...)
Kommt man an den unkompilierten php-Quellcode?
Ja, wenn man FTP-Zugang (oder aehnliches) zum Server hat.
Via Web normalerweise nicht.
http://www.dclp-faq.de/q/q-php-code.html
Kann man die mit POST gesendeten Variablen manipulieren?
Ja. Ziemlich leicht.
Man kann z.B. das Formular lokal speichern, manipulieren und wieder
abschicken. Und nein, auf den REFERRER kannst Du Dich auch
nicht verlassen.
Gruesse,
Thomas
Wie sicher ist mein PHP-Quellcode auf dem Server?
wenn noch andere leute auf dem server scripte ablegen dürfen, nicht sehr.
es reicht, mit einem absichtlich fehlerhaft geschriebenen script den php-interpreter abzuschiessen, dann liefert der apache die php-scripte ungeparst aus, d.h. den source-code.
ich habe schon 3 solche fälle selbst erlebt, wo statt des erwarteten downloads der php-source übermittelt wurde.
deshalb dinge, wie z.b. die sql-abfrage mit den db-user-daten in include-dateien packen, die ausserhalb der verzeichnisse liegen, auf die der apache von aussen einen zugriff gestattet.
Mir geht es dabei nicht um den Code an sich, sondern um eine in php umgesetzte Passwortabfrage. Der Status, ob man eingeloggt ist wird mit Formularen und input-hidden-tags und der Post-Methode an das nächste Dokument übergeben. Die Benutzernamen und Passwörter stehen in einer MySQL-Datenbank.
auch für, mit post versendete formulare gibt es jede menge manipulations-möglichkeiten.
schau mal unter <www.bookmarklets.com>, was man allein alles schönes mit javascript anstellen kann.
selbst, wenn du daten nur per post und mit prüfung des referers verarbeitest, kann ich per javascript den source der seite beliebig manipulieren, auch ohne die seite erst local zu speichern.
und verlass dich auf keine beschränkungen, die du in ein formular mit eingebaut hast, wie etwa die maximale länge eines strings. prüfe den inhalt jeder variable vor der verarbeitung auf zulässige zeichen, max. länge etc.
Kommt man an den unkompilierten php-Quellcode?
geht so
Kann man die mit POST gesendeten Variablen manipulieren?
kinderspiel
Kann man in die MySQL-Datenbank einbrechen?
schwer, wenns keine sicherheitslücken gibt
mit freundlichen grüssen aus berlin, raik