Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP und Perl zum sichern meines mySQL passworts
sixfriends
27-06-2003, 14:47
Ich war mir nicht ganz sicher, wo genau ich das hier posten sollte (Hätte wohl genauso gut nach Datenbanken oder Scriptsprachen gepasst :( )
Ich hab folgendes Problem: Ich hab vor, ein PHP script laufen zu lassen, dass auf eine mySQL Datenbank zugreift. Die Dateien liegen aber alle auf einem Unirechner und deshalb kann jeder mit einem gültigen account per ssh, telnet oder auch durch physischen Zugriff in mein WWW Verzeichnis gehen und mein mySQL Passwort auslesen (Der Ordner, in dem die WWW Verzeichnisse der User liegen ist public).
Daher hab ich mir folgendes überlegt: Wenn ich dazu ein Perl Script schreibe, welches Username und passwort genau dann zurückgibt, wenn es durch eine bestimmte Datei aufgerufen wurde, und welches für group und others nur Berechtigung ausführen hat, dann wären meine Daten erstmal relativ sicher.
Ist so was möglich?
Wie leite ich die Ausgabe des Perl Scripts in meine Variablen im PHP script um?
Wie führe ich mit PHP das Perl script aus?
BTW: Mein erster Gedanke war, das Passwort zunächst in einem temp Ordner zwischenzuspeichern, aber das kann man wohl auch vergessen (Stichwort raceattack)
Danke im Vorraus.
Hi Sixfriends!
Dein Problem ist eigentlich viel einfacher zu lösen:
Du erstellst die Datei ganz normal mit deinem User, weist ihr als Gruppe die Userbezeichnung zu, unter der der Apache läuft (meistens apache) und
gibst für alle anderen User keine Rechte.
--> du kannst die Datei lesen, die PHP Skripte können sie lesen, die anderen können sie nicht lesen.
Ein Sicherheitsrisiko bleibt:
Ein anderer könnte ein PHP Skript schreiben der ebenfalls auf deine Datei zugreift... falls bei eurem Server der safe_mode aktiviert ist sollte das jedoch auch nicht gehen.
sixfriends
27-06-2003, 17:19
Das hört sich schon mal gut an....
Aber wie weise ich der Datei eine bestimmte Gruppe zu? Bin da nicht so ganz bewandert auf dem Gebiet.
Und kann ich mir die Userkennung vom Apache irgendwie anzeigen lassen?
Zum Sicherheitshinweis: Wenn ich das oben genannte gleich mit der PHP Datei mache, die auf die Datenbank zugreift, kann doch nix mehr passieren. Solange der Angreifer nicht den Namen der aufzurufenden Funktion kennt, die die Verbindung öffnet, kann er doch eigentlich nicht in meiner Datenbank rummanipulieren.:confused:
Individuum
27-06-2003, 19:21
chmod 700 dein.script
^^ nur der besitzer kann lesen
chown apache:apache dein.script
^^ die datei gehört nun apache
^^apache ist der user und die gruppe!
sixfriends
27-06-2003, 20:29
Urgh. Hab gerade bei meinem Admin nachgefragt. Apache gehört zur Gruppe other, läuft außerdem auf einem anderen Rechner. Damit wäre diese Möglichkeit gestorben.
@Gaert: Im übrigen hab ich jetzt glaub ich auch gerafft, was du mit dem Sicherheitsrisiko meinst. Jemand könnte mit einem PHP Script per Internet meine toll geschützte Datei einlesen und auf seinem Bildschirm ausgeben. Hast du das gemeint?
@Individuum: Wenn ich apache als User einstelle, kann ich doch selber nichts mehr an dem Script ändern. Kann ich stattdessen auch sowas schreiben:
chown IrgendeinUser:GruppeAberNichtDieGruppeVonIrgendein User mein.script oder muss zuerst die Gruppe??
Damit wären wir wieder am Anfang. Hat sonst noch jemand eine Idee oder weiß jemand, wie ich das zuerst gepostete hinbekomme. Mit Einstellungen an den Berechtigung klappt es jedenfalls nicht.:eek:
Hallo Sixfriends!
1.
Ob der Apache auf dem Rechner läuft oder nicht ist irrelevant... hauptsache die Gruppe existiert.
2.
Über das Internet kann niemand deine Datei lesen, da der Inhalt ja vorher interpretiert wird. Es könnte aber sein, dass ein User, der auf dem gleichen Rechner ein PHP Dateien erstellen kann (z.B. einer deiner Mitstudenten) ein PHP Skript schreibt, welches deine Konfigurationsdatei öffnet und den Inhalt ausgibt (das PHP Skript arbeitet ja mit Berechtigung des Apachen und nicht mit denen des Users).
3.
PHP Skripte müssen AFAIK für alle Benutzer lesbar und ausführbar sein, da sie sonst nicht funktionieren.
4.
Aus 3. Resultiert, dass du deine Konfigurationsdaten nicht in einem normalen Skript speichern kannst, sondern in einer Datei die du dann mit include() in dein Skript reinholst.
Also:
Datei in der du die Benutzerdaten Speicherst: config.inc.php (die PHP Endung ist nur zur Sicherheit, damit sie niemand vom Web aus auslesen kann)
Danach:
chown deinuser:apachegruppe config.inc.php
chmod 750 config.inc.php
Inhalt von config.inc.php:
<?php
$user = deinuser;
$password = deinpasswort;
?>
Einbinden in dem eigentlichen Skript:
include(config.inc.php)
sixfriends
27-06-2003, 21:56
Das Problem ist, dass der Apache zu keiner Gruppe gehört, er ist einfach "others" (Apache kann auf das Script nur zugreifen nach chmod o+r script, falls das es deutlicher macht). D.h. wenn der Apache Rechte hat, die Datei zu lesen, dann hat diese Rechte auch jeder User.
Und ja, andere Studis können auch Scripte auf dem Server laufen lassen. Was ich damit gemeint hatte war folgendes:
<?PHP
$file = fopen("/PfadZuMeinerDatei/config.inc.php", "r");
$ausgabe = fread ($file, filesize ("/PfadZuMeinerDatei/config.inc.php"));
echo $ausgabe;
?>
Das Script hätte beim Ausführen übers Internet die Apache Rechte (oder bin ich jetzt auf dem Holzweg) und dürfte somit meine Datei lesen, die dann auch ausgegeben würde.
Die Möglichkeit mit Änderung der Rechte funzt also überhaupt nich.
Compuholic
01-07-2003, 13:03
Alle Dateien und Programme (auch der Apache) muß bei einem *nix System zu einer Benutzergruppe gehören. Wenn die "normalen" Benutzer in der gleichen Gruppe wie der Apache arbeiten, dann stimmt irgendwas nicht. Das Rechtesystem von Linux hat ja genau darin seine Stärken.
Es ist sowiso sehr schwach vom Systemadministrator, das jeder Benutzer auf das WWW-Verzeichnis eines beliebigen anderen Studenten zugrifen kann.
Was Du (und er Admin) wahrscheinlich meinst ist, daß alle Benutzer auf dem System das Recht haben diese Datei zu lesen. Vielleicht läßt es sich einrichten, daß alle www Dateien z.B. einer Gruppe namens "www" angehören. Dann braucht man nur der Benutzernamen unter dem der Apache läuft der Gruppe "www" hinzuzufügen. Solange dein Benutzername der Eigentümer der Datei ist kann man ja dann allen anderen Benutzern auf dem System einfach alle Rechte entziehen.
Sollte das nicht gehen ist es vielleicht möglich, daß Passwort auf einem anderen Rechner zu speichern. Dann kann das PHP-Script auf diesen Rechner zugreifen. Um sicherzugehen, daß keine unbefugten Personen versuchen das Passwort von diesem Rechner zu bekommen kann man ja die IP-Adresse überprüfen, die versucht darauf zuzugreifen (die Adresse des Rechners auf dem sich der PHP-Interpreter befindet wird ja immer gleich sein, oder?).
nur so ne idee am rande...was ist denn wenn du das passwort am anfang der session abfragst ?, dann liegt es nirgendwo rum
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.