Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [php] login per formular (https://www.delphipraxis.net/29234-%5Bphp%5D-login-per-formular.html)

seifman 6. Sep 2004 12:13


[php] login per formular
 
Hallo!

Ich habe mit php einen Login für meine Homepage geschrieben. Dieser sucht in einer Datei nach dem Benutzernamen und dem dazugehörigen Passwort.
Erst wenn das Passwort richtig ist, wird auf eine andere Seite weitergeleitet.

Mein Problem ist nun folgendes:
Die Datei(en) liegt in einem Ordner, der per .htaccess und .htpassword geschützt ist.
Sobald die Datei aufgerufen wird, erscheint das Login-Fenster für .htaccess.
Dieses möcht ich unterbinden. Trotzdem soll das Verzeichnis geschützt bleiben, da es
ja als "restricted area" geführt werden soll.
Gibt es dafür irgendeine simple Lösung?

Danke.

seifman

Meflin 6. Sep 2004 12:47

Re: [php] login per formular
 
so nicht, du könntest aber die passwörter gehasht abspeichern sodass es nichts macht wenn man sie als plaintext sehen kann und ergo den httaccess schutz rausnehmen!

Nuclear-Ping 6. Sep 2004 12:48

Re: [php] login per formular
 
Wenn es per .htaccess und .htpasswd geschützt ist, dann glaube ich nicht, dass du eine Datei dort so direkt rauslesen kannst, da ja der WebServer selber die Restriktion drauflegt und nicht PHP.

Einfache Möglichkeiten wären entweder
  • das über mySQL zu regeln
  • DirectoryListing auf dieses Verzeichnis zu verbieten
  • die Daten einfach verschlüsselt in der Datei abzulegen
  • Nur den Hash des Usernamen & Passwortes zu speichern und nicht die Daten selber

Das fällt mir spontan dazu ein.

Grüße,
Mario

seifman 6. Sep 2004 13:12

Re: [php] login per formular
 
Die Daten in eine DB zu speichern, finde ich überzogen, da es eh nur eine Hand voll User sind. Also habe ich sie auch verschluesselt in einer Datei hinterlegt.

Kenn mich mit DirectoryListing net so aus, denke aber mal, daß es einfach nur für die Darstellung eines Verzeichnisses dient. Wie funktioniert das ganze dann?? Kann ich dann also die .htPassword weglassen ??

mfg seifman

himitsu 6. Sep 2004 13:20

Re: [php] login per formular
 
Du könntest auch PHP mißhandeln und die Daten in 'ner .php-Datei speichern

Code:
<?php
//[color=red]Zeile 1[/color]
//[color=red]Zeile 2[/color]
//[color=red]Zeile 3[/color]
?>Zugriff verweigert
Also am einfachsten am Anfang und Ende der Datei die 2 Zeilen einfügen und jede Datenzeile als Kommentar kennzeichnen.
Wenn jetzt jemand von aussen darauf zugreift, dann macht es nicht's, da ja nur "Zugriff verweigert" angezeigt wird.

Beim einlesen (z.B. mit dem Befehl FILE) braucht man ja nur die erste und letzte Zeile auslassen und die 2 zusätlichen Zeichen ignorieren.

Ich selber hab's zwar noch nicht bei mir eingebaut, und speichere die Daten in einfachen Dateien (mit 'ner anderen Endung).

Allerdings solltest du dennoch die Passwörter hashen - die Namen hab ich aber nicht gehasht, da ja sonst die Userverwaltung erschwert wird, wenn man die Namen nicht mehr entschlüsseln kann.

[edit+add]
mySQL war mir auch zu übertrieben für meinen Fall

Meflin 6. Sep 2004 13:21

Re: [php] login per formular
 
wenn sich in dem verzeichnis keine weiteren sensiblen daten befinden und die die userdaten verschlüsseltst kannst du den passwortschutz mit htaccess getrost weglassen.

Nuclear-Ping 6. Sep 2004 13:29

Re: [php] login per formular
 
Stimmt, die Usernamen zu hashen wäre bissl übertrieben, aber nicht unbedingt verkehrt. ^^

Aber wenn er die Methode mit dem PHP-Missbrauch nutzt, kann er doch gleich ein Array mit den Usern anlegen:
Code:
<?
  $AllowedUsers = array ("Hans:Hkhs676",
                         "Gustav:235GHnvb",
                         ...);
?>Zugriff verweigert!
Dadurch spart man sich die Arbeit, die Datei auszulesen, die Zeichen zu entfernen usw. ...

Verzeichnis-Listings kannst du mit der Options-Direktive (bei Apache) unterbinden:

"Options -Indexes" ... in die .htaccess, allerdings muss dann auch AllowOveride Options erlauben.

Grüße,
Mario

Meflin 6. Sep 2004 13:30

Re: [php] login per formular
 
das mit dem array ist eine gute idee, würde ich an deiner stelle so machen!

Nuclear-Ping 6. Sep 2004 13:34

Re: [php] login per formular
 
Trotzdem würde ich für sowas mySQL bevorzugt verwenden, da dies noch weiter weg vom Zugriff eventueller User liegt (dem Hoster wollen wir ja nichts unterstellen ...) und nebenbei noch viel mehr Vorteile mit sich bringt.

seifman 6. Sep 2004 13:36

Re: [php] login per formular
 
Da habe ich mich vieleicht falsch ausgedrückt.

Ich habe in dem aufzurufenden Verzeichnis sensible Daten zu liegen, welche auch nur für die vorher definierten User zugänglich sein sollen. Daher habe ich auch keine andere Lösung gefunden, als dieses mit htaccess zu schützen. Würde ich das rauslassen, so kann man jederzeit auf dieses verzeichnis per url zugreifen, vorausgesetzt man kennt dessen namen.

mfg seifman

Meflin 6. Sep 2004 13:37

Re: [php] login per formular
 
und warum verlinkst du nicht gleich auf das verzeichnis (dann kommt auch der password input prompt) und sparst dir den php login screen?

seifman 6. Sep 2004 13:42

Re: [php] login per formular
 
schon. aber genau diesen screen möchte ich halt nicht sehen.

himitsu 6. Sep 2004 13:43

Re: [php] login per formular
 
klar, das mit dem Array würde auch gehn, allerdings könnte es da auch ein/zwei... Probleme geben.

Wenn zum Beispiel mal ein kleinerer Datenfehler in der Datei ist, könnte sie ja unter Umständen nicht mehr eingebunden werden, wenn der PHP-Parser mekert sind alle Daten weg und bei der anderen Methode kann man ja noch den Rest auslesen...

Und ausserdem muß man auch noch auf Sonder- und Steuerzeichen achten, damit der Stringaufbau nicht gestört ist (z.B. auf das kein ' im Namen vorkommt, oder dieses codiert wird)

[add]
ich weiß ja nicht, was du für weitere Daten hast, aber kannst du diese nicht auch noch anders sichern, oder eventuell auch dein Verzeichnis aufteilen, also in eines mit htaccess-Schutz und eines ohne.

Jelly 6. Sep 2004 13:43

Re: [php] login per formular
 
Hallo,

ich wollt mich auch mal zu dem Thema äußern, und ich denk ich hab das gleiche Problem. Ich will sozusagen einen Benutzerbereich erstellen für einen Verein, wo jeder sich persönlich einloggen kann, und anschliessend auf Dateien zugreifen kann, die ich zum Download anbiete. Diese Dateien müssen natürlich in einem .htaccess geschützten Bereich liegen, da man sonst, unter Kenntnis der URL, auch ohne sich einzuloggen an die Dateien rankommt. Daher ist mein Anliegen, nach erfolgreichem einloggen als User via einem PHP Skript, das vorher als .htaccess geschützte Verzeichnis zu entsperren, und ganz normal drauf zugreifen zu können. Die Frage ist also die Gleiche wie die von seifmann: wie übergebe ich im PHP Skript die Zugangsdaten fürs .htaccess Verzeichnis?
Über Delphi weiß ichs wie ichs mach, sprich wie ich bei einem Download direkt das .htaccess User und Passwort mit übergebe, aber in PHP komm ich da nicht dahinter.

Gruß,
Tom

alcaeus 6. Sep 2004 13:45

Re: [php] login per formular
 
Hi seifman!

Wenn du auf .htaccess verzichten möchtest, dann kannst du folgendes machen:

Die Dateinamen ändern, und diese in einer php-Datei eintragen. (so wie es auch mit den Avataren in der DP geschieht). Einen 30stelligen Dateinamen, der aus alphanumerischen Zeichen besteht erratet man nicht so schnell.
Den Download machst du über die php-Datei nach erfolgtem login. Mit Hilfe der HTTP-Header kannst du dem Benutzer den serverseitigen Dateinamen komplett verbergen, und die Dateien sind ziemlich geschützt, allerdings nicht 100%ig.

Greetz
alcaeus

fiasko 6. Sep 2004 13:46

Re: [php] login per formular
 
Zitat:

Zitat von seifman
Ich habe in dem aufzurufenden Verzeichnis sensible Daten zu liegen, welche auch nur für die vorher definierten User zugänglich sein sollen. Daher habe ich auch keine andere Lösung gefunden, als dieses mit htaccess zu schützen.

das läßt sich auch nicht umgehen. Man kann die authentifizierung auch über eine andere Datenbasis laufen lassen; aber das Login Fenster des Browsers bleibt.

Um das zu umgehen müßtest du alle Dateien in ein nicht öffentlich zugängliches Verzeichnis legen und dann per PHP Skript bei erfolgreicher Authentizierung dem Browser übergeben. Da gibt es aber so seine Probleme, vorallem mit Dateinamen und man muß natürlich aufpassen das das Skript nur gültige Dateinamen annimmt.

fiasko 6. Sep 2004 13:48

Re: [php] login per formular
 
Zitat:

Zitat von Jelly
Über Delphi weiß ichs wie ichs mach, sprich wie ich bei einem Download direkt das .htaccess User und Passwort mit übergebe, aber in PHP komm ich da nicht dahinter.

Das ist nicht möglich. Es gibt keinen Standard für das Übergeben von HTTP Authorizationsdaten.

himitsu 6. Sep 2004 13:51

Re: [php] login per formular
 
es gibt ja auch möglichkeiten beim z.B. beim Download nicht den Dateinamen direkt anzugeben, sondern das über ein Script zu leiten, so ist es auch möglich den original Dateinamen zu verbergen, so das sie sich sogar in einem ungeschützten Bereich liegen kann (da ja "keiner" den Namen kennt)

z.B. http://FNSE.de/S.php?0A1

man könnte ja auch noch in dem Script einiges prüfen
(z.B. über die Kekse, oder den Referer, oder ähnliches, ob der Zugriff überhaupt erlaubt ist)

Jelly 6. Sep 2004 13:54

Re: [php] login per formular
 
Zitat:

Zitat von fiasko
Das ist nicht möglich. Es gibt keinen Standard für das Übergeben von HTTP Authorizationsdaten.

Das hier funktioniert aber bei mir:
Delphi-Quellcode:
hConnect := InternetConnect(hSession, PChar(HostName),
          INTERNET_DEFAULT_HTTP_PORT, PChar(FUserName), PChar(FPassword), INTERNET_SERVICE_HTTP, 0, 0);
Gruß,

himitsu 6. Sep 2004 14:02

Re: [php] login per formular
 
Stimmt @Jelly, dabei fällt mir ein,
man kann ja auch in der URL das Passwort und den Usernamen übergeben.

Und da es ja möglich sein sollte auch eine Datei unter Angabe der direkten URL einzulesen, müßte das doch auch gehn?
Code:
s = file('ftp://username:passwort@url.de/dat.ei');
(ich weiß jetzt gerade nicht, ober der URL-Aufbau so ganz richtig ist, aber so in etwa sollte es wohl aussehn)

Meflin 6. Sep 2004 14:03

Re: [php] login per formular
 
Zitat:

Zitat von himitsu
es gibt ja auch möglichkeiten beim z.B. beim Download nicht den Dateinamen direkt anzugeben, sondern das über ein Script zu leiten, so ist es auch möglich den original Dateinamen zu verbergen, so das sie sich sogar in einem ungeschützten Bereich liegen kann (da ja "keiner" den Namen kennt)

z.B. http://FNSE.de/S.php?0A1

man könnte ja auch noch in dem Script einiges prüfen
(z.B. über die Kekse, oder den Referer, oder ähnliches, ob der Zugriff überhaupt erlaubt ist)

den referer sollte man nie aber auch wirklich nie für sicherheitsrelevante zwecke verwenden, der ist leichter fälschbar wie ein kreuz als unterschrift!

himitsu 6. Sep 2004 14:18

Re: [php] login per formular
 
ich meinte ja auch nicht nur den, aber z.B. die Daten von LogInScript sind eine gute Möglichkeit - schließlich muß dieses ja wisen, ob jemand rein darf, oder nicht.

[edit]
und den Referer hab ich bei mir auch nur vorgesehn, damit es "nicht möglich" ist eine Datei direkt in 'ne andere Webseite einzubauen, wo ich das nicht möchte.

FastJack2 6. Sep 2004 14:31

Re: [php] login per formular
 
Hy

also was auf jeden Fall funktioniert ist, wenn du einfach per js auf das htaccess geschütze Vereichnis verlinkst und einfach die logindaten davorschreibst...
etwa so:
username:password@www.meinserver.de/geschuetztesverzeichnis/

dann kommt die htaccess-box nur, wenn du nen falsches Login eingibst ...

anders ist es afaic nicht möglich eine htaccess Abfrage zu kapseln...

greetz
-FastJack2

himitsu 6. Sep 2004 14:36

Re: [php] login per formular
 
Zitat:

Zitat von FastJack2
Hy

also was auf jeden Fall funktioniert ist, wenn du einfach per js auf das htaccess geschütze Vereichnis verlinkst und einfach die logindaten davorschreibst...
etwa so:
username:password@www.meinserver.de/geschuetztesverzeichnis/

funktionieren mag das wohl, aber dieses bedeutet, dass sich irgendwo in der Browsercache der Users deren Username und Passwort als Klartext (unverschlüsselt) rumgeistert und das unter Umständen sogar über längere Zeit.

Mamphil 6. Sep 2004 16:17

Re: [php] login per formular
 
Hi!
Zitat:

Zitat von himitsu
Du könntest auch PHP mißhandeln und die Daten in 'ner .php-Datei speichern

Code:
<?php
//[color=red]Zeile 1[/color]
//[color=red]Zeile 2[/color]
//[color=red]Zeile 3[/color]
?>Zugriff verweigert

Wie bitte?

Pack doch die Dateien einfach in ein .htaccess-geschützes Verzeichnis, auf das kein User zugreifen kann. Wenn du nach überprüftem Login die Dateien anzeigen lassen willst, kannst du einfach ein include('my_sec_dir/'...); oder ein file('my_sec_dir/'...); machen. PHP schert sich nämlich einen Dreck um irgendwelche Apache-.htaccess-Files.

Mamphil

Meflin 6. Sep 2004 16:54

Re: [php] login per formular
 
äh nö tut es scheinbar nicht sonst würde ja so wie ers hat funzen oder was? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz