Brei Geschrieben 25. Januar 2005 Teilen Geschrieben 25. Januar 2005 Hallo, ich habe 2 php Seiten im Netz mit denen man Daten zu einer homepage hinzufügen und löschen kann (sind auch nur zugänglich wenn man weiß wo sie im verzeichniss liegen). Die soll natürlich nicht jedermann nutzen. Wie stelle ich das am besten mit einer passwortabfrage an? Kann ich da im quellcode dass passwort in klartext hineinschreiben oder irgendwie verschlüsseln? POST-übertragung zu unsicher? htaccess scheidet leider aus. wie macht ihr das so? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T´Pau Geschrieben 25. Januar 2005 Teilen Geschrieben 25. Januar 2005 Ob es sicher übertragen wird hat mit POST nicht so viel zu tun, ist nur besser, weil es dann nicht wie bei GET in der URL auftaucht. Wenn du es sicher übertragen willst, nimm https. Das Passwort kann man verschlüsselt ( md5 )in den Code/die DB schreiben. Die Usereingabe auch verschlüsseln und dann beide vergleichen. Bei richtigen Passwort kannst du dann eine Session starten, damit der User eingeloggt ist. Bei den beiden PHP Dateien überprüfst du jeweils am Anfang, ob eine Session vorhanden ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Saturos Geschrieben 25. Januar 2005 Teilen Geschrieben 25. Januar 2005 Also wenn du die usereingabe auch verschlüsselst kannst du sie nicht mehr aus der Datenbank ohne weiteres auslesen. Dann kannst du zB nicht mehr nach dem Usernamen sortieren, weil er ja im MD5-Format in der Datenbank steht, ne? Ich denke es reicht, wenn du das Passwort im MD5-Format in der Datenbank verstauchst (wie mein Vorredner bereits erwähnte). dann kannst du's abfragen: select username from Tb_users where passwort = md5('$passwort') and username = '$username'; oder so ähnlich. Für MD5 brauchst du varchar mit 32 Zeichen. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 26. Januar 2005 Teilen Geschrieben 26. Januar 2005 Also wenn du die usereingabe auch verschlüsselst kannst du sie nicht mehr aus der Datenbank ohne weiteres auslesen. Dann kannst du zB nicht mehr nach dem Usernamen sortieren, weil er ja im MD5-Format in der Datenbank steht, ne? Ich denke es reicht, wenn du das Passwort im MD5-Format in der Datenbank verstauchst (wie mein Vorredner bereits erwähnte). dann kannst du's abfragen: select username from Tb_users where passwort = md5('$passwort') and username = '$username'; oder so ähnlich. Für MD5 brauchst du varchar mit 32 Zeichen. Gruß Das ist wohl die meist gewählte variante. So kannst du es recht ordentlich machen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 26. Januar 2005 Autor Teilen Geschrieben 26. Januar 2005 Und wenn ich einfach sowas mache: if($_POST["passw"] == "passwort"){.....} else {echo "fehler";} [/PHP] ist das dann unsicher? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 26. Januar 2005 Teilen Geschrieben 26. Januar 2005 wenn du dein password im source md5 verschlüsselt einfügst ist das auch eine Möglichkeit. Diese ist zwar recht starr, aber es geht und ist nicht unsicherer wie die andere methode Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 27. Januar 2005 Teilen Geschrieben 27. Januar 2005 Und wenn ich einfach sowas mache: if($_POST["passw"] == "passwort"){.....} else {echo "fehler";} [/PHP] ist das dann unsicher? [PHP] $passwort = "passwort" ... if ($_POST["passwd"] == $passwort) ... Als md5-Hash ist es schon sicherer, weil dann keiner das PW lesen kann, auch wenn er Zugirff auf den Server hat. Der Fall oben (der ja fast deiner ist) ist ansich auch ok, es kann aber schon möglichkeiten geben, in der das PW dann ausgelesen werden kann. Normalerweise geht eine solche Seite ja immer durch den PHP-Interpreter und der gibt den PHP-code nicht aus. Was aber, wenn nach irgendeiner Änderung am Server das nicht mehr wie gewollt funktioniert? Dann wäre es (zumindest für kurze Zeit vielleicht) u.U. Möglich das PW auszulesen. Daher solltest du das PW eher in einer eigenen (php-)Datei ausserhalb des Webpfades ablegen und dann per Include einbinden. Die md5-Variante wäre dem aber vorzuziehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sowisd Geschrieben 31. Januar 2005 Teilen Geschrieben 31. Januar 2005 Hi, darf ich mich mal an die Frage anhängen ?? Das geschilderte Problem im letzten Post würde ich gerne nochmal aufgreifen. Was mache ich denn am besten bei SQL-DB-Zugriffen ? Ich muss dort doch im Quellcode ein SQL-Connect machen, und dort das PW im Klartext angeben. Wie kann ich das umgehen ?? Damit mir niemand bei nem Serverproblem die Zugangsdaten zum SQL-DB ausliest? Danke Michael Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 31. Januar 2005 Teilen Geschrieben 31. Januar 2005 Ich muss dort doch im Quellcode ein SQL-Connect machen, und dort das PW im Klartext angeben. Wie kann ich das umgehen ?? Damit mir niemand bei nem Serverproblem die Zugangsdaten zum SQL-DB ausliest? l Du packst die Logindaten in eine PHP-Datei, die du ausserhalb des Webpfades ablegst. Also so, dass du über den Webserver keinen zugriff darauf hast. z.B. <?php $dbhost = "localhost"; $dbname = "test"; $dbname = "dblogin"; $dbpasswd = "12345"; ?> [/php] In deiner Datei bindest du die Datei dann per include ein. PHP hat Zugriff auf die Datei (wenn die Berechtigung stimmt) aber sonst keiner. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BayK Geschrieben 1. Februar 2005 Teilen Geschrieben 1. Februar 2005 also am einfachsten isses wenn du die http-authentisierung verwendest http_user http_passwd <?php if (!isset($_SERVER['PHP_AUTH_USER'])) { Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "Text to send if user hits Cancel button\n"; exit; } else { echo "Hello {$_SERVER['PHP_AUTH_USER']}"; echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; } ?> [/php] quelle: phpmanual wenn du https hernimmst is die übertragung auch noch sicher ..... falls dir das aber noch net genug ist kannst du dir auch selbst ein chap coden ^^ chap for php Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 1. Februar 2005 Teilen Geschrieben 1. Februar 2005 also am einfachsten isses wenn du die http-authentisierung verwendest Er sagte aber, dass htaccess ausscheidet. Also kann er dem Webserver seinen "Realm" (den Bereich, der geschützt ist) garnicht mitteilen (denke mal er wird dann auch keinen Zzugriff auf die Serverkonfiguration haben). Ausserdem kann er auch kein htpasswd angeben und auch nicht, was für User für diese Authentifizierung gültig sind. HTTP-Authentisierung schön und gut, aber hier wohl eher fehl am Platz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BayK Geschrieben 1. Februar 2005 Teilen Geschrieben 1. Februar 2005 das is doch was komplett anderes... das is ein normaler http-request dazu braucht man keinen zugriff auf die serverconfig The request requires user authentication. The response MUST include a WWW-Authenticate header field (section 14.47) containing a challenge applicable to the requested resource. The client MAY repeat the request with a suitable Authorization header field (section 14.8). If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has already attempted authentication at least once, then the user SHOULD be presented the entity that was given in the response, since that entity might include relevant diagnostic information. HTTP access authentication is explained in "HTTP Authentication: Basic and Digest Access Authentication" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 2. Februar 2005 Teilen Geschrieben 2. Februar 2005 das is doch was komplett anderes... das is ein normaler http-request dazu braucht man keinen zugriff auf die serverconfig Ein 401 ist nichts anderes, als der Server schickt, wenn in der config oder einer .htaccess Datei eine authorisierung vorgesehen ist. Ok, da es sich um eine einzelne Seite handelt ginge das hier wohl, sobald aber mehr als eine Seite im spiel ist nicht mehr (bzw. mit einer Anmeldung auf jeder Seite). War ein Fehler von mir. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.