PHP und MYSQL, Passwörter verstecken, wie?

Hallo Profis,
ich habe gerade mein erstes PHP-Script mit MySQL Anbindung geschrieben. Lokal auf meinem Rechner hat alles funktioniert. In meinen Einsteigerbüchern steht nun, daß man die Zugangsdaten für die Datenbank schützen sollte.
Die Datenbankanbindung habe ich jetzt in einer ‚zugangsdaten.inc.php‘ Datei, welche per include() in das eigentliche Script eingebunden wird.

Wenn ich das richtig verstanden habe, sollte ich die Datei mit den Zugangsdaten in ein mit .htaccess gschütztes Verzeichnis ablegen. Das habe ich auch gemacht.
Jetzt funktioniert das aber leider auf dem entfernten Server nicht.
Fehlermeldung, Zugriff nicht erlaubt (Sollte ja auch eigentlich so sein, oder).
Ist das überhaupt die richtige Vorgehensweise?
Frage:
Wie schützt man seine Passwörter? Denn die müssen ja in Klarschrift in das Script geschrieben werden.
Im Normalfall sind die ja im übertragenen Quelltext nicht lesbar, aber ich habe bereits mehrfach gelesen, dass man die Daten trotzdem noch zusätzlich schützen sollte. Nur wie?
Danke für Eure Antworten
Gruß Klaus

Wenn ich das richtig verstanden habe, sollte ich die Datei mit
den Zugangsdaten in ein mit .htaccess gschütztes Verzeichnis
ablegen. Das habe ich auch gemacht.
Jetzt funktioniert das aber leider auf dem entfernten Server
nicht.
Fehlermeldung, Zugriff nicht erlaubt (Sollte ja auch
eigentlich so sein, oder).

nein, sollte nciht so sein. htaccess wirkt nur fuer den webserver, beim include solltest du dich aber auf auf das filesystem beschraenken.
wenn du also zugriff nicht erlaubt vom db-server bekommst hast du was falsch gemacht, wenn du zugriff ncith erlaubt vom dateisystem bekommst, hast du keine leseberechtigung auf das geschuetzte verzeichniss, und du muesstest mit chmod die zugriffsberechtigung auf das geschuetzte verzeichnis ändern.

Ist das überhaupt die richtige Vorgehensweise?

naja, ich fuer meinen teil speichere alles ausserhalb der webserver-root dann brauche ich keine htacess zu bauen, und der webserver kann die datei ganz sicher nciht rausgeben.

crypt()
Hallo Klaus,

Frage:
Wie schützt man seine Passwörter? Denn die müssen ja in
Klarschrift in das Script geschrieben werden.

Aarrrrrrrgggggghhhhhhhh, wer sagt den sowas? Die Passwörter werden mit mit crypt($passwort) verschlüsselt, dann schreibst du die so in das Script. Ok wenn jetzt jemand sein Passwort eingibt, wird das auch verschlüsselt und dann mit dem im Script verglichen. http://www.dynamic-webpages.de/php/function.crypt.php

Gruss Jan

Wie schützt man seine Passwörter? Denn die müssen ja in
Klarschrift in das Script geschrieben werden.

Aarrrrrrrgggggghhhhhhhh, wer sagt den sowas? Die Passwörter
werden mit mit crypt($passwort) verschlüsselt, dann schreibst
du die so in das Script. Ok wenn jetzt jemand sein Passwort
eingibt, wird das auch verschlüsselt und dann mit dem im
Script verglichen.

wie ich den op verstanden hatte, ging es um die zugangsaten zur db. die kannst du schlecht mit einer einwegfunktion schuetzen…

ups sorry mein Fehler

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

außerhalb webserver-root? Sicherheit Telnet?
Hallo Leute,
ich bin leider ein Dummkopf. Ich habe noch eine Frage.
dog schrieb:

Ist das überhaupt die richtige Vorgehensweise?

naja, ich fuer meinen teil speichere alles ausserhalb der
webserver-root dann brauche ich keine htacess zu bauen, und
der webserver kann die datei ganz sicher nciht rausgeben.

meine Frage:
Also, wenn ich mich einlogge auf den web-server, dann bin ich auf dem obersten Verzeichnis meiner web-Dateien. Wenn ich das richtig verstanden habe, soll ich jetzt mit cd … eine Stufe höher gehen und dort die Datenbankzugangsdaten ablegen? Richtig?
Probiere ich aus, vermute aber, dass mein hoster das nicht gestattet.

Leider besitze ich auch nur rudimentäre Unix - Kenntnisse. Welche dreistellige Zahl muß ich denn am Besten eingeben chmod 777, oder welche Zahl.
Das geschützte Verzeichnis soll aber ja weiterhin für den Zugang von außen geschützt bleiben. Also wenn jemand von außen auf eine Datei zugreift, soll eine sichere Paßwortabfrage erscheinen. Denn dort habe ich die Administrationsseite, um den Datenbankinhalt zu verändern.

Noch eine Frage zu Sicherheit und Telnet:
Da ich bisher ohne PHP arbeitete, benutzte ich nur FTP-Upload.
Um auf dem Server zu arbeiten solle ich telnet benutzen, laut meinem Hoster und einiger Bücher. Ich las aber des öfteren wie unsicher telnet sein soll. Stimmt das, oder ist es übertrieben. Ist es unsicherer als ftp, denn bei ftp wird doch auch nichts verschlüsselt, oder?
Mein Hoster bietet auch ssh an, welches ich wohl in Zukunft benutzen werden, übertriebene Vorsicht?

Seid ihr noch da, dann bitte noch eine Frage:
dog schrieb:

nein, sollte nciht so sein. htaccess wirkt nur fuer den webserver, :beim include solltest du dich aber auf auf das :filesystem: :beschraenken.
wenn du also zugriff nicht erlaubt vom db-server bekommst hast du was :falsch gemacht, wenn du zugriff ncith erlaubt vom :dateisystem: :bekommst,"

Was heißt filesystem, und dann spricht dog vom dateisystem, meint er hier das gleiche. Meint ‚dog‘ mit filesystem den Bereich vom server, wo ich die Dateien für die Homepage ablege? Mit include() beziehe ich mich doch immer auf eine Datei, die irgendwo auf meinem Hoster liegt.?
Ich höre erstmal auf und hoffe auf Antworten
Gruß Klaus und Danke

naja, ich fuer meinen teil speichere alles ausserhalb der
webserver-root dann brauche ich keine htacess zu bauen, und
der webserver kann die datei ganz sicher nciht rausgeben.

Hallo,

könntest du das bitte mal erklären, denn das verstehe ich nicht,
finde es aber interessant.

Ciao Qasi

Hallo Klaus,

Also, wenn ich mich einlogge auf den web-server, dann bin ich
auf dem obersten Verzeichnis meiner web-Dateien. Wenn ich das
richtig verstanden habe, soll ich jetzt mit cd … eine Stufe
höher gehen und dort die Datenbankzugangsdaten ablegen?
Richtig?
Probiere ich aus, vermute aber, dass mein hoster das nicht
gestattet.

Nein, du sollst ein Unterverzeichnis anlegen, wo du die Recht mit

chmod 700 änders! Dann kannst nur noch du im Filesystem auf die Daten
zugreifen.

Noch eine Frage zu Sicherheit und Telnet:
Da ich bisher ohne PHP arbeitete, benutzte ich nur FTP-Upload.
Um auf dem Server zu arbeiten solle ich telnet benutzen, laut
meinem Hoster und einiger Bücher. Ich las aber des öfteren wie
unsicher telnet sein soll. Stimmt das, oder ist es
übertrieben. Ist es unsicherer als ftp, denn bei ftp wird doch
auch nichts verschlüsselt, oder?
Mein Hoster bietet auch ssh an, welches ich wohl in Zukunft
benutzen werden, übertriebene Vorsicht?

Das hängt klar davon ab, was für Dateien du hochladen willst. Wenn du
beim Geheimdienst arbeitest… Aber mal Scherz bei Seite: ssh ist ne
gute Sache und ja kein Problem
Gute Clients kann man sich überall runterladen.

Ich hoffe das hilft ein bischen (bin aber auch kein Experte!)

Danke Qasi für chmod 700, aber noch Telnetfrage
Danke für die Antwort,
ich habe noch eine Frage.
Du schriebst:

Das hängt klar davon ab, was für Dateien du hochladen willst.
Wenn du
beim Geheimdienst arbeitest… Aber mal Scherz bei Seite: ssh
ist ne
gute Sache und ja kein Problem
Gute Clients kann man sich überall runterladen.

Hast Du dich auf Telnet bezogen? Ich dachte, bei Telnet wäre jetzt nicht unbedingt die Gefahr des Mitlesens meiner einfachen HTML- oder Bilddateien, sondern vielmehr, dass dadurch auch jemand an meine Zugangsdaten und damit Zugang zum Server von mir erhält. Viele öffentliche Server mit Telnetzugang sind doch glaube ich wegen der Unsicherheit abgeschaltet worden?
Und bei ftp stelle ich mir als Laie das so vor:
Am Anfang gebe ich unverschlüsselt meine Zugangsdaten ein, diese können leicht (leicht, wenn man der vielen Panikmache glauben soll) von Leuten mit etwas Ahnung bei der Übermittlung mitgelesen werden. Alles Quatsch?
Aber zurück zum PHP/MySQL/.htaccess Problem: Deine Antwort:

Nein, du sollst ein Unterverzeichnis anlegen, wo du die Recht mit
chmod 700 änders! Dann kannst nur noch du im Filesystem auf die Daten
zugreifen.

Danach lege ich also meine Zugangsdaten für die Datenbank nicht im .htaccess geschützten Verzeichnis ab. Oder kann ich auch den .htaccess Verzeichnis mit chmod 700 ändern und bin dann auf dem richtigen Weg?
Anmerkung: Ich habe hier ca. über 15 Bücher zu PHP/MYSQL, leider steht das in keinem so richtig ausführlich drin, wie die richtige Vorgehensweise ist. Warum eigentlich nicht, scheint mir bereits bei meinen ersten PHP/MySQL Gehversuchen wichtig zu sein?
Wer kann mir ein gutes Buch oder OnlineTutorial nennen, welches dieses mal für Doofis erklärt.
Danke und Gruß Klaus

naja, ich fuer meinen teil speichere alles ausserhalb der
webserver-root dann brauche ich keine htacess zu bauen, und
der webserver kann die datei ganz sicher nciht rausgeben.

könntest du das bitte mal erklären, denn das verstehe ich
nicht,
finde es aber interessant.

naja, von mir mit php gebaute internetauftrite strukturiere ich auf dateisystem-ebene in etwa so:

/ ist mein ftphome-verzeichnis
/htdocs/ ist meine webroot
/htdocs/img mit allen images
/htdocs/css js downloads whatever
/mod hier liegen module, conf dateien etc.
/savepostvalues interne logs fuer formulare etc.
/pages die eigentlichen seiten

dann habe ich eine
/htdocs/index.php die includet die module, und includet in abhaengigkeit von get-variablen die seiten aus /pages

damit habe ich konsequent alles was php-code beinhaltet ausserhalb dr webroot, und somit kann nicemals ein php-quellcode ausgeliefert werden. ausser bestenfalls ein <?php include "../modules/alle.php"; ?>

1 Like

naja, ich fuer meinen teil speichere alles ausserhalb der
webserver-root dann brauche ich keine htacess zu bauen, und
der webserver kann die datei ganz sicher nciht rausgeben.

meine Frage:
Also, wenn ich mich einlogge auf den web-server, dann bin ich
auf dem obersten Verzeichnis meiner web-Dateien. Wenn ich das
richtig verstanden habe, soll ich jetzt mit cd … eine Stufe
höher gehen und dort die Datenbankzugangsdaten ablegen?
Richtig?

so in etwa. ich bin aber davon ausgegangen, dass dein ftp-home eines ueber www-home liegt.
siehe mein posting an quasi 2 zeilen weiter oben.

Probiere ich aus, vermute aber, dass mein hoster das nicht
gestattet.

evtl kannst du ja deine web-server-root verschieben.

Leider besitze ich auch nur rudimentäre Unix - Kenntnisse.
Welche dreistellige Zahl muß ich denn am Besten eingeben chmod
777, oder welche Zahl.
Das geschützte Verzeichnis soll aber ja weiterhin für den
Zugang von außen geschützt bleiben. Also wenn jemand von außen
auf eine Datei zugreift, soll eine sichere Paßwortabfrage
erscheinen. Denn dort habe ich die Administrationsseite, um
den Datenbankinhalt zu verändern.

ah so… klar, die sollte natuerlich in der webroot bleiben.
ansonsten: http://www.tutorials.de/tutorials6877.html
aber vorsicht, es haben sich shcon leute ausgesperrt.

Noch eine Frage zu Sicherheit und Telnet:
Da ich bisher ohne PHP arbeitete, benutzte ich nur FTP-Upload.

inwiefern besteht zw. den sachen ein zusammenhang?

Um auf dem Server zu arbeiten solle ich telnet benutzen, laut
meinem Hoster und einiger Bücher. Ich las aber des öfteren wie
unsicher telnet sein soll. Stimmt das, oder ist es
übertrieben. Ist es unsicherer als ftp, denn bei ftp wird doch
auch nichts verschlüsselt, oder?

telnet ist genauso sicher wie ftp.
die schwaeche liegt wohl darin, dass die passwoerter unverschluesselt uebertragen werden.
das problem dass sich aus dem fakt ergibt ist, dass beliebiege leute, die deinen traffic sehen auch deine zugangsdaten sehen koennen.
der unterschied ist halt, dass du mit ftp „nur“ zugriff auf das dateisystem hast, bei telnet hingegen eine echte shell, und damit „direkt im system“ bist. das missbrauchspotential ist damit hoeher.

Mein Hoster bietet auch ssh an, welches ich wohl in Zukunft
benutzen werden, übertriebene Vorsicht?

nö, eigentlich nicht, ssh ist mittlerweile standard fuer remote-shells. insofern ist telnet nur noch ueberholt.
sftp, das equivalent hat sich wohl nur noch nicht etabliert.

nein, sollte nciht so sein. htaccess wirkt nur fuer den webserver, :beim include solltest du dich aber auf auf das :filesystem: :beschraenken.
wenn du also zugriff nicht erlaubt vom db-server bekommst hast du was :falsch gemacht, wenn du zugriff ncith erlaubt vom :dateisystem: :bekommst,"

Was heißt filesystem, und dann spricht dog vom dateisystem,

die beiden sind synonym.

Meint ‚dog‘ mit filesystem den
Bereich vom server, wo ich die Dateien für die Homepage
ablege? Mit include() beziehe ich mich doch immer auf eine
Datei, die irgendwo auf meinem Hoster liegt.?

naja, du kannst die datei ueber das dateisystem includen:
include „verzeichnis/datei“;
oder über den webserver:
include „http://host/verzeichnis/datei
besser ist aber erstes.

da du geschrieben ahst, dass das problem nach der isntallation eines verzeichnisschutzes haette es damit zusammenhaengen koennen.

mal sehen

Hast Du dich auf Telnet bezogen? Ich dachte, bei Telnet wäre
jetzt nicht unbedingt die Gefahr des Mitlesens meiner
einfachen HTML- oder Bilddateien, sondern vielmehr, dass
dadurch auch jemand an meine Zugangsdaten und damit Zugang zum
Server von mir erhält. Viele öffentliche Server mit
Telnetzugang sind doch glaube ich wegen der Unsicherheit
abgeschaltet worden?

telnet überträgt meines wissens nach die logindaten in clear text, d.h. dass Deine Daten einfach mal schnell ausgelesen werden könnten, wenn jemand Deinen Traffic abhören kann (bzw das tut).

Und bei ftp stelle ich mir als Laie das so vor:
Am Anfang gebe ich unverschlüsselt meine Zugangsdaten ein,
diese können leicht (leicht, wenn man der vielen Panikmache
glauben soll) von Leuten mit etwas Ahnung bei der Übermittlung
mitgelesen werden. Alles Quatsch?

da muss ich passen, aber ich habe hier noch nichts derartiges gehört, wie man es über telnet gesagt hat. Nichtsdestotrotz würde ich mal sagen ist ftp noch eine ebene tiefer als das http-Protokoll… Ich hab da auch mal was von secure ftp gehört, aber mehr als den namen wohl auch nicht so wirklich - hatte glaub ich was mit dem secret und private key zu tun, was im Moment wohl eines der sichersten Methoden der Datenübertragung zu sein scheint (zumindest für den Hausgebrauch :wink:)

Aber zurück zum PHP/MySQL/.htaccess Problem: Deine Antwort:

Nein, du sollst ein Unterverzeichnis anlegen, wo du die Recht mit
chmod 700 änders! Dann kannst nur noch du im Filesystem auf die Daten
zugreifen.

Danach lege ich also meine Zugangsdaten für die Datenbank
nicht im .htaccess geschützten Verzeichnis ab. Oder kann ich
auch den .htaccess Verzeichnis mit chmod 700 ändern und bin
dann auf dem richtigen Weg?

hm… wenn Du Dich damit auskennst dann kannst Du das verwenden, aber ich bezweifle, dass das alles nötig ist. Schwachstelle scheint für mich wirklich das telnet zu sein. Wenn man auf Deine wwwroot rankommt, so dass man sich den source-code deiner php-daten ansehen kann, dann wird das auch das ende für Deine Zugangsdaten zur Datenbank sein…
Auf der sicheren Seite bist Du da nur, wenn man weder mit ftp/telnet etc noch per http auf Dein Datenbank-includefile zugreifen kann…
Wenn Du aber nun chmod 700 auf den Ordner setzt und gleichzeitig eine .htaccess darin platzierst kann es denke ich sogar vorkommen, dass Du Dich aussperrst… Ich weiss nicht ob ftp/telnet durch htaccess blockiert werden können oder ob sie sich darin auch authentifizieren können… Hm… allerdings könntest Du vmtl chmod wieder auf 755 bzw 777 zurücksetzen, dann sollte das funktionieren ^^
Aber naja - wenn jemand Deine Zugangsdaten knackt dann hat er eh schon den halben weg getan…

Anmerkung: Ich habe hier ca. über 15 Bücher zu PHP/MYSQL,
leider steht das in keinem so richtig ausführlich drin, wie
die richtige Vorgehensweise ist. Warum eigentlich nicht,
scheint mir bereits bei meinen ersten PHP/MySQL Gehversuchen
wichtig zu sein?
Wer kann mir ein gutes Buch oder OnlineTutorial nennen,
welches dieses mal für Doofis erklärt.
Danke und Gruß Klaus

das was genau erklärt? php wird imo auf www.schattenbaum.net/php am Anfängerfreundlichsten erklärt… mysql kann ich selbst noch nicht so gut… aber die .chm files auf php.net und mysql.org helfen eigentlich immer weiter - man muss nur immer die richtigen Befehle finden *g*

Zurück zum Problem an sich…
Am sichersten ist es wohl, wenn Du die Datei nicht in Deinem wwwroot sicherst…
Als zweitsicherste Möglichkeit sehe ich htacess, falls das ohne Probleme geht, aber ganz sicher bin ich mir da nicht.
Die reduzierung der Rechte ist eine gute idee… vllt geht es sogar wenn Du den read/write-zugriff auf das fertige script ausschaltest also chmod 111 glaub ich… aber ob php dann noch die Datei ausführen kann…? I don’t know…
Eine andere idee wäre dann noch einen apache Redirect zu definieren, der so wie Deine include Datei benannt ist - ich denke mal, dass das auch funktionieren sollte, aber 100%ig sicher bin ich mir da nicht :wink:
Im grunde reicht es aber auch, wenn die Datei einen abwägigen Namen hat - evtl noch eine Abfrage in der Datei, damit auch nur scripte von Deinem Server sie aufrufen dürfen und eigentlich kann dann nur noch was passieren, wenn Dein PHP ausfällt und die Datei nicht mehr interprätiert werden kann…

du wirst mich jetzt für doof erklären, aber du hast mit eine
Denkblockade beseitigt!

Danke!

Hallo Klaus!

Also nochmal zusammengefasst wie ich es mache:

  1. neues Verzeichnis erstellen: z.B. DB_config
  2. Verzeichniss so schützen das alle es öffnen können aber nur du es
    dir anzeigen lassen und schreiben kannst.
  3. Dann per .htaccess das Verzeichnis mit einem Passwort schützen und
    die .htuser Datei woanders speichern.
  4. Eine Datei z.B. config.php anlegen wo
<?php error_reporting(E_ALL);
define('dbhost', '???'); define('dbuser', '???'); define('dbpass', '???'); define('mydb' , '???'); ?\> drinsteht. 5. In jeder Datei in der die Datenbankpasswörter vorkommen include '/absoluter Pfad/DB\_config/config.php'; $db = mysql\_connect(dbhost, dbuser, dbpass) or die("Keine Verbindung möglich: " . mysql\_error()); mysql\_select\_db(mydb, $db) or die("Auswahl der Datenbank fehlgeschlagen"); reinschreiben. Das sollte einigermaßen sicher sein! Immer ssh oder sftp zum übersenden dieser Passwörter benutzen (aber wenn man einmal so ein config.php hat braucht man bei neuen Skripten das nicht mehr! Ich hoffe das hilft!! Qasi

Nochmal Danke, aber
Hallo Qasi,
nochmal vielen Dank für Deine Erklärungen, leider werfen Deine Anregungen weitere Fragen bei mir auf.
Ich werde mich jetzt aber erst einmal 2-3 Tage damit beschäftigen, um dann weitere konkrete Fragen stellen zu können.
Ich werde dann einen neuen Artikel am Anfang des Boards stellen.

Du brauchst daher vielleicht erstmal nicht antworten, eventuell löse ich mein Problem anhand Deiner bisherigen Beiträge.

Jetzt geht mir beim ersten Lesen Deines Beiträges folgendes durch den Kopf.

Hallo Klaus!

Also nochmal zusammengefasst wie ich es mache:

  1. neues Verzeichnis erstellen: z.B. DB_config

ok

  1. Verzeichniss so schützen das alle es öffnen können aber nur
    du es
    dir anzeigen lassen und schreiben kannst.

jetzt muß ich nachschauen, welches chmod richtig ist
chmod 7??

  1. Dann per .htaccess das Verzeichnis mit einem Passwort
    schützen und

aha, also kann eine per .htaccess geschütztes Verzeichnis durch chmod
so eingestellt werden, das alle es öffnen können. Wozu? Was bedeutet diese Maßnahme? Warum hier diese Maßnahme? Kommt Deine unten beschriebene config.php Datei hier rein?

die .htuser Datei woanders speichern.

von einer .htuser Datei habe ich in noch keinem meiner Bücher etwas gelesen. Da muß ich mich jetzt erst mal schlau machen, was das ist und was die bewirkt. Meist Du damit die normalen php-scripte, die ich irgendwo in meinem Verzeichnissytem ablege?

  1. Eine Datei z.B. config.php anlegen wo
<?php : error_reporting(E_ALL);
define('dbhost', '???'); define('dbuser', '???'); define('dbpass', '???'); define('mydb' , '???'); ?\> drinsteht.

ok, so eine Datei mit den wichtigen Angaben habe ich bereits, wenn auch nicht so wie von Dir beschrieben. error_reporting() und define() habe ich nicht benutzt. Ist vielleicht auch erst mal nicht so wichtig, da schaue ich demnächst mal nach.
Aber: Wo soll diese Datei hin? In das .htaccess-Verzeichnis? In .htuser? Die wurde in Deiner Erklärung vor config.php erwähnt.

  1. In jeder Datei in der die Datenbankpasswörter vorkommen

include ‚/absoluter Pfad/DB_config/config.php‘;

muß, sollte man den absoluten Pfad nehmen? Sicherheitsbedingt oder andere Gründe?

$db = mysql_connect(dbhost, dbuser, dbpass) or die("Keine
Verbindung
möglich: " . mysql_error());
mysql_select_db(mydb, $db) or die(„Auswahl der Datenbank
fehlgeschlagen“);

reinschreiben.

ok, also in jedes php-script, welches eine Datenbankanbindung benötigt, braucht ja die Zugangsdaten. Das habe ich bei mir auch so gemacht wie Du es beschrieben hast.

Das sollte einigermaßen sicher sein!

Immer ssh oder sftp zum übersenden dieser Passwörter benutzen
(aber

ok, ich habe ssh benutzt.

wenn man einmal so ein config.php hat braucht man bei neuen
Skripten
das nicht mehr!

Ich hoffe das hilft!!

Ich hoffe auch. Viele Dank, Aber Du siehst, ein bißchen ist bei mir offen geblieben.
Wenn Du zu meinen oben gemachten Frage noch einmal kurze Statements geben würdest, wäre das super.

Ich will ja nicht allzu doof erscheinen, aber in den meisten meiner Bücher stehen die Datenbankangaben immer oben im Script.
In wenigen Büchern wird auf das einbinden mit include() hingewiesen, teilweise mit dem Hinweis auf Schreibersparnis.
Die von Dir gemachten Erläuterungen fand ich nirgends.

Gestern habe ich mir noch ein, zwei Tutorials im Netz angeschaut. Leider Unbefriedigend. Zum Beispiel in teamone viel über .htaccess, aber nichts in Verbindung PHP/MYSQL
In selfphp leider auch nichts.
Gruß und Danke Klaus

Unter Deinem Posting oben, wo Du beschreibst, wie es bei Dir aussieht, schreibe ich mal von meinem Aufbau.
Denn wir befinden uns in zwei Welten, und ich habe Deinen Aufbau noch nicht ganz verstanden. Werde mich aber bemühen.

Und so sieht es bei einem Laien aus!
Ihr habt folgendes geschrieben,

naja, ich fuer meinen teil speichere alles ausserhalb der
webserver-root dann brauche ich keine htacess zu bauen, und
der webserver kann die datei ganz sicher nciht rausgeben.

könntest du das bitte mal erklären, denn das verstehe ich
nicht,
finde es aber interessant.

naja, von mir mit php gebaute internetauftrite strukturiere
ich auf dateisystem-ebene in etwa so:

/ ist mein ftphome-verzeichnis
/htdocs/ ist meine webroot
/htdocs/img mit allen images
/htdocs/css js downloads whatever
/mod hier liegen module, conf dateien etc.
/savepostvalues interne logs fuer formulare etc.
/pages die eigentlichen seiten

Jetzt ich Anfänger mit meinem ersten PHP-script.
Ist mir leider nur vom Prinzip einigermaßen klar. Im Praktischen für mein akutes Problem nicht.
Bei mir Anfänger sieht das so aus.

Logge ich mich per FTP ein, befinde ich mich auf der für FTP obersten Ebene. Hier muß meine index.html stehen und ab hier alle weiteren Dateien und Verzeichnisse.
Meint Ihr das mit webserver-root?

Logge ich mich per ssh ein, komme ich per cd … noch ein Verzeichnis höher. Dort stehen nur die Verzeichnisse htdocs und etc.
Meist Du das mit ‚außerhalb webserver-root‘.
Ich kann dorthin aber keine Datein verschieben, habe ich mit mv versucht. Permission denied.
Mit dem Editor vi eine Datei anlegen ging ebenfalls nicht.

Bei mir sieht das jetzt so aus:

  1. Auf meinem Server liegt irgendwo eine php-Datei, die über den Zugriff einer Datenbank Inhalte anzeigen soll.
  2. In einem .htaccess Verzeichnis liegt ein php-script, mit dessen Hilfe ich über ein Formular den Datenbankinhalt ändern kann.
  3. Ich habe eine drittes php-script, config.php, welches die Zugangsdaten für die Datenbank enthält und von 1) und 2) per include() eingebunden wird.

Jetzt die entscheidende Frage:
Wo packe ich die config.php hin. Ausserhalb der htdocs geht ja nicht.
In ein .htaccess Verzeichnis? Habe ich gemacht.
Das klappt leider nicht.
Innerhalb der .htaccess ja, von außerhalb nein
Klappt es wenn, ich per chmod das .htaccess Verzeichnis ändere?

Oder ohne .htaccess,
die config.php Datei in ein wie von euch vorgeschlagenes Verzeichnis mit chmod 700 Eigenschaft packen.
Wollte ich jetzt als nächstes tun.

Ich bitte noch einmal um kurze Stellungnahmen.

Danke im Voraus
Klaus

dann habe ich eine
/htdocs/index.php die includet die module, und includet in
abhaengigkeit von get-variablen die seiten aus /pages

damit habe ich konsequent alles was php-code beinhaltet
ausserhalb dr webroot, und somit kann nicemals ein
php-quellcode ausgeliefert werden. ausser bestenfalls ein

<?php include "../modules/alle.php"; ?>

Logge ich mich per FTP ein, befinde ich mich auf der für FTP
obersten Ebene.

dann ist das dein ftphome.

Hier muß meine index.html stehen und ab
hier alle weiteren Dateien und Verzeichnisse.
Meint Ihr das mit webserver-root?

ja.

Logge ich mich per ssh ein, komme ich per cd … noch ein
Verzeichnis höher. Dort stehen nur die Verzeichnisse htdocs
und etc.
Meist Du das mit ‚außerhalb webserver-root‘.

nein, dass ist dein „ssh-home“
htdocs ist deine webroot.

Ich kann dorthin aber keine Datein verschieben, habe ich mit
mv versucht. Permission denied.
Mit dem Editor vi eine Datei anlegen ging ebenfalls nicht.

… dann hast du auf das verzeichniss keine schreibrechte, es ist damizt fuer dich nicht nutzbar. warumd er admin dich dann ueberhaupt in das verzeichnis laest ist mir schleierhaft…

Bei mir sieht das jetzt so aus:

  1. Auf meinem Server liegt irgendwo eine php-Datei, die über
    den Zugriff einer Datenbank Inhalte anzeigen soll.
  2. In einem .htaccess Verzeichnis liegt ein php-script, mit
    dessen Hilfe ich über ein Formular den Datenbankinhalt ändern
    kann.
  3. Ich habe eine drittes php-script, config.php, welches die
    Zugangsdaten für die Datenbank enthält und von 1) und 2) per
    include() eingebunden wird.

Jetzt die entscheidende Frage:
Wo packe ich die config.php hin. Ausserhalb der htdocs geht ja
nicht.
In ein .htaccess Verzeichnis? Habe ich gemacht.
Das klappt leider nicht.

wieso?
wenn du die .htaccess in .htacces~ umbenennst, geht es dann wieder?

Innerhalb der .htaccess ja, von außerhalb nein
Klappt es wenn, ich per chmod das .htaccess Verzeichnis
ändere?

hast du
include „geschuetztesverzeichnis/config.php“ geschrieben,
oder:
include „http://host/geschuetztesverzeichnis/config.php
letzteres waere falsch und wuerde den fehler erklären, wenn letztgenannter test positiv endet.

Oder ohne .htaccess,
die config.php Datei in ein wie von euch vorgeschlagenes
Verzeichnis mit chmod 700 Eigenschaft packen.

wenn es geht…
erzeuge ein verzeichnis, pruefe ob es angezeigt wird, wenn ja, aendere die berechtigungen, wenn es dann nicht mehr angezeigt wird, taugt die massnahme als schutz. pruefe dann, ob du mit php dateien aus dem verzeichnis nutzen kannst, wenn nicht, taugt es doch nicht.

Es klappt, juhee, Klaus dankt Euch (owt)
Danke