Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo.

Ich habe mehrere PHP-Scripte(hängen alle an dem Script Testdatenbank.php dran) und eine SQL-Datenbank (Auf einem anderen Rechner).

Ich habe direkt in meine Scripte folgenden Zugriff eingebaut:

$HOST = "172.18.194.11";

$USERID = "christianlaubach";

$PW = "chrislaub";

$db_handle = mysql_connect($HOST,$USERID,$PW) or die("Die Datenbank ist momentan nicht erreichbar");

$datenbank = "ppsfr_spielwiese";

mysql_select_db($datenbank,$db_handle);

So. Also habe ich den Zugriff in den Scripten die diesen benötigen Hardcore reinprogrammiert. Vorerst.

So solls aber nicht bleiben. Ich will im Endeffekt eine Login-Seite (Mit Name und PW Abfrage), von der aus ich bei korrekter Eingabe auf mein Frontend komme (<= Also die PHP-Scripte) und das gleichzeitig der obige Zugriff in die PHP-Scripte included wird. Bei falschem Login kommt man dann am Besten gar nicht zur Testdatenbank.php oder zumindest zu dieser, ohne dass dort der Login drinne steht.

Ich wollte es mit htpasswd machen... aber funzt net..

Bsp es gibt in der SQL-DB einen Benutzer "Hans" mit dem PW "Wurst" ;)

Wie kann ich das dann machen, dass ich auf einer Login-Seite diesen Namen bzw. dieses PW eingebe, diese Daten dann in die Scripte included werden, sodass DIESER Benutzer Zugriff auf die DB hat, und alle ohne gültigen Benutzer nicht??

Für Hilfe wäre ich sehr dankbar!

PS: Ich weiss bisher weder, wie man daten in php-scripte included (erst recht nicht, wie ich noch bedingungen dafür erstelle), oder wie ich das mit dem PW und Namen mache, wo sollen die gespeichert werden, etc? wie mache ich den Zugriff auf diese datei, dass er schaut ob PW/Name in dieser Datei vorhanden sind??

Habs mir so vorgestellt:

Ich habe ne .txt.

Dort steht Hans - Wurst drinne.

Beim Login wird geschaut obs in der .txt einen namen Hans und ein PW Wurst gibt. Ist richtig, also komme ich in die Testdatenbank.php bzw. in die Scripte. Dort steht dann das obige bsp. mit den daten hans + wurst. diese Daten dürfen dann auch nicht mehr geändert werden, sondern sind fest in den scripten verankert. sollte jemand nur lokal den login umgangen haben, hat er dann immernoch keinen zugriff auf die db... und wenn doch, dann ist er auch dazu berechtigt:D

Geschrieben

Was ist Hardcore reinprogrammiert? :D hardcoded kenn ich, also fest im Programmcode ;)

Zu deinem Problem:

Mach eine HTMLseite mit Anmeldeformular. Dieses Formular hat als action dein Testlogin.php.

Dort hast du dann



$link = mysql_connect($db_host, $_POST["username"], $_POST["PW"]);
if (!$link)
{
echo "<h1>Anmeldung nicht korrekt</h1>";
exit;
}
else
{
header("location: Testdatenbank.php");
}

[/php]

EDIT:

Ach ja... username und PW müsstest du dir z.B. in der Session speichern.

Geschrieben

willst du die logins in der mysql vorhalten und beim anmelden des benutzers schauen, ob er in mysql vorhanden ist, und ihm dann allenfalls zugriff gewähren? so hab ich das jedenfalls verstanden.

dann würde ich sowas wie mod_auth_mysql verwenden. das ist sicherer, weil wirkliche HTTP-authentifizierung verwendet wird.

s'<hab ich schon gesagt, dass ich apache-module liebe>Amstel

Geschrieben

Ja, genau. Der User, soll sich in der MySQL-DB eintragen/anlegen, mit Name und Passwort. Und über mein Frontend soll er nur Zugriff auf die DB haben, wenn:

-Er in der DB als Benutzer angelegt ist

-Er über einen Login Zugriff mit meinem Frontend herstellt.

Ich habe jetzt das von dir genannte Prog, allerdings weiss ich nicht, damit umzugehen:(

Kannst du mir erklären, wie ich damit die Zugriffe festlegen kann?

Geschrieben
Schon mal mit Sessions beschäftigt?

Daten eingeben und auf den folgenden Seiten noch immer darauf zugreifen.

Was haben Sessions mit der Authentifizierung mittels MySQL zu tun?

Aber zu mod_auth_mysql. Das muss auf dem Server installiert werden bzw. vom Server geladen werden (LoadModule ...). Dann kannst du in der Konfiguration (oder in einer .htaccess Datei) einen geschützten Bereich einrichten, aber der User und das PW wird nicht, wie meistens, gegen eine Textdatei geprüft, sondern gegen die Datenbank.

Ich dachte aber immer, dass dann eine Tabelle in der DB vorhanden ist/sein muss, in der es 2 Felder gibt User/Passwort. Und dagegen werden die Eingaben geprüft, nicht gegen MySQL Benutzer. Hab damit aber selber noch nichts gemacht. (Also ähnlich wie die Textdateiversion, nur anstelle der Datei eben eine Tabelle)

Geschrieben

Um das mal festzuhalten.

Du möchtest, dass ein Benutzer sich auf deiner Webseite authentifiziert. Dies soll er gegen die MySQL-DB (gegen einen richtigen DB-Account) tun oder soll nur eine Tabelle in der DB abgefragt werden ob Benutzer mit dem Passwort vorhanden ist?

Meiner Meinung macht es im Sinne von DB-Berechtigungen mehr Sinn wenn mehrere Benutzer nur über 1 DB-Login auf die DB zugreifen und dieses dann nur entsprechender Rechte hat. Das macht die Fehlersuche in einem Berechtigungsfall eher einfacher.

Geschrieben

Das wird hier noch geklärt, ob jeder seinen eigenen Benutzer anlegen soll oder ob ein Benutzer für das gesamte Team angelegt wird. Nur, ich weiss nicht obs mal nötig ist, aber was ist wenn 2 Leute gleichzeitig auf die DB zugreifen wollen? Mit demselben Benutzer??? Geht das?

Und wie gesagt, der Benutzer wird in der DB direkt angelegt, über folgenden Befehl:

# mysql –u root –p

mysql# use mysql;

mysql# GRANT ALL ON *.* TO christianlaubach‘%‘ IDENTIFIED BY ‘ppsfr‘;

mysql# FLUSH PRIVILEGES;

mysql# quit

<= Selbstveständlich nur ein Bsp;)

So, für die DB habe ich ein Frontend gebastelt. Den Zugriff (mit meinen Benutzer-Daten) hab ich fest in die Scripte gecoded. Jetzt aber will ich, dass jeder, der einen gültigen Benutzer in der DB hat, sich über ein Login einloggen kann.

Diese Login-Daten (Host,USERID,PW) sollen dann in die Scripte included werden, mit den jeweiligen Werten.

Geschrieben
aber was ist wenn 2 Leute gleichzeitig auf die DB zugreifen wollen? Mit demselben Benutzer??? Geht das?

Natürlich geht das, es gehen sogar noch viel mehr als 2 Leute.

Wie schonmal geschreiben wurde, ist es meist auch einfacher, bzw. ich kenne es auch gar nicht anders, das der Zugriff auf die DB unabhängig von den Berechtigungen im Clientprogramm ist.

Also du hast ein Programm, mit dem du auf die Daten zugreifst und der Zugang erfolgt immer über einen festen Benutzer. Es gibt z.B. einzelne Punkte im Programm, die je nach REchten nicht allen Benutzern zur Verfügung stehen. Angenommen manche Benutzer dürfen keine Sätze anlegen. Wenn du das über den DB Benutzer steuerst (für die besagte Tabelle keine Insert Berechtigung), dann merkst du ja im Programm erstmal nichts davon. Der Punkt wäre also aktiv, und der Benutzer würde dann wenn er den Punkt auswählt die Meldung von der DB bekommen. Praktischer ist es doch, für das Programm eine eigene Berechtigungsstruktur zu haben und die Punkte entspr. auszublenden. Der Zugriff auf die DB erfolgt aber immer mit einem Benutzer, der Einfügen darf in alles Tabelle, die genutzt werden. Mehrere Benutzer auf der DB sind dann entweder für verschiedene DB oder eben nur einzelne Tabellen (wenn nur eine DB benutzt wird) berechtigt. Also für jedes Programm gibt es einen Benutzer auf der DB.

Ansonsten fällt der Verwaltungsaufwand für die Berechtigungen ja 2mal an, 1mal fürs Prügramm und dann noch für die DB. Ausserdem müssen die auch immer gleich gehalten werden.

Geschrieben

Hm. Also wenn ich dich richtig verstanden habe, würde ich sagen, du bist an meinem Problem etwas vorbeigeschrammt.

Und zwar soll eine gewissen Test-Gruppe auf die DB Zugriff haben. Alle sollen KOMPLETTEN Zugriff bzw. alle Rechte haben.

Nur soll ausser diesen Leuten kein Anderer auf die DB zugreifen können.

Da der Zugriff ja mom. noch hardcoded ist, würde jeder mit meinen Scripten auf die DB zugreifen können-.-

Also muss der Zugriff raus aus den Scripten.

Ich hätte mir das so vorgestellt, dass die Login-Seite beim Betätigen des Logins in der DB schaut ob diese Benutzer-Daten (Name/PW) in der DB angelegt sind. Und wenn ja, wird mein Zugriff in dei PHP-Dats included, mit den entsprechenden Daten (Name/PW).

Hoffe, man kann durchblicken, wie ich mir das vorstelle ..

Und hoffe auch, dass es so realisierbar ist.

Geschrieben

Da der Zugriff ja mom. noch hardcoded ist, würde jeder mit meinen Scripten auf die DB zugreifen können-.-

Nunja, das ist meistens so... wenn ich z.B. Zugang zu deinen Computer habe, kann ich alles ändern.

Das wird dadurch verhindert, dass man nicht jedem Zugang gewährt bzw. ein PAsswort abfragt. Also legst du dein Script entweder in einen passwortgeschützten Realm auf dem Server oder du baust eine Abfrage in dein Skript ein, bevor die Benutzung erlaubt ist. So ist es ja bei Ebay z.B. auch. Oder meinst du jeder Benutzer dort ist als DB Benutzer angelegt? ;) Der Zugang zur DB ist dann ferst hinterlegt irgendwo. Ich würde dir empfehlen, dass nicht in jedes Script zu schreiben, sonden in eine externe Datei die du dann includest. diese Datei legst du irgendwo ausserhalb des Webpfades ab, somit hat nur der Zugriff auf die Datei, der auch an/auf den Webserver kommt, und auch da nur, wenn er die entspr. Berechtigung hat (PHP läuft auf dem Server und kann somit (theoretisch) auch auf den kompletten Server zugreifen, nicht nur auf den im Web veröffentlichten Teil).

Wenn du jeden Benutzer auf der DB anlegst und die dort Anlegen, Einfügen Ändern und Löschen können, können sie das ja auch ohne deine Scripte. Wenn du das mit einer extra authorisierung machst und eine DBAnmeldung für alle hast, kannst du mit deinem Script steuern was sie dürfen und was nicht. Ohne deine Scripte, oder wenn du die irgendwie änderst, wären Änderungen an der DB ausgeschlossen, auch wenn sie einen DB Client benutzen und die Serveradresse wissen o.ä.

Auch wird der DB-Benutzer und das DB-Passwort niemals den Webserver verlassen, wenn du das per Eingabe machst schon.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...