Server seitiges Passwort geschützes Verzeichnis wird nicht abgefragt
klwild
- php
Hallo zusammen. Sorry wieder mal ich.
Nachdem ich meine alte Webseite auf HTML5 umgebaut habe, habe ein kleines Problem was ich auch durch intensive Internet rechere nicht lösen kann. Vieleicht weiss hier jemand Rat.
Ich habe ein Inline Popup implementiert welches grundlegend funktioniert.
<nav>
<ul>
<li><a href="http://www.klaus-wilde.ch/">Home</a></li>
<li><a href="#links-popup" class="open-popup-link">Friendly Links</a></li>
<li><a href="#impressum-popup" class="open-popup-link">Impressum</a></li>
<li><a href="#index_privat-popup" class="open-popup-link">Privat</a></li>
<li><a href="mailto:webmaster@klaus-wilde.ch?subject=Klaus's Website">Kontakt</a></li>
</ul>
</nav>
welches im index.php aufgerufen wird:
<!-- Inline -IMPRESSUM- Popup Window -->
<div id="impressum-popup" class="white-popup mfp-hide">
<?php include ("impressum.php"); ?>
</div>
<!-- Inline -PRIVAT- Popup Window -->
<div id="index_privat-popup" class="white-popup mfp-hide">
<?php include ("privat/index_privat.php"); ?>
</div>
Mein Problem ist nund das das Verzeichnis /privat/ auf Server Ebene Passwort geschützt ist aber das Popup die Datei /privat/index_privat.php ohne Passwort Abfrage ausführt und es jeder sehen kann welches nicht der Sinn und Zweck des Passwortschutzes ist.
Wenn ich die Datei /privat/index_privat.php direkt als URL aufrufe wird das Verzeichnis Passwort korrekt abgefragt.
Mache ich einen Denkfehler?
Gruss Klaus
Hi,
<!-- Inline -PRIVAT- Popup Window --> <div id="index_privat-popup" class="white-popup mfp-hide"> <?php include ("privat/index_privat.php"); ?> </div>
Mein Problem ist nund das das Verzeichnis /privat/ auf Server Ebene Passwort geschützt ist
Was heißt für Dich "auf Server Ebene Passwort geschützt"?
Ist das eine http-Authentification (.htaccess)?
Wenn ja: das wirkt bei Zugriffen per http.
Dein Zugriff erfolgt aber aus dem PHP-Script per Filesystem-Zugriff.
Wenn ich die Datei /privat/index_privat.php direkt als URL aufrufe wird das Verzeichnis Passwort korrekt abgefragt.
Also hast Du einen Zugriffsschutz, der auf http-Ebene funktioniert.
Mache ich einen Denkfehler?
Dein Zugriffsschutz greift bei http, Du greifst aber über das Filesystem zu.
Es würde auch nicht helfen, den php-include mit http-Url zu machen, denn dann würde Dein PHP-Script nach dem Paßwort gefragt (und das kann das Paßwort nicht eingeben), nicht der Browser (der die Abfrage an den Benutzer weitergeben könnte).
cu,
Andreas a/k/a MudGuard
Danke Andreas. Das war mir so nicht klar.
Was heißt für Dich "auf Server Ebene Passwort geschützt"? Ist das eine http-Authentification (.htaccess)?
... und ja es ist über .htaccess geschützt wie du festgestellt hast.
Es würde auch nicht helfen, den php-include mit http-Url zu machen, denn dann würde Dein PHP-Script nach dem Paßwort gefragt (und das kann das Paßwort nicht eingeben), nicht der Browser (der die Abfrage an den Benutzer weitergeben könnte).
Dann ist da wohl keine andere Möglichkeit als ein PHP Login zu erstellen oder?
Tach!
Dann ist da wohl keine andere Möglichkeit als ein PHP Login zu erstellen oder?
Ja, wenn du Dinge über PHP auslieferst, muss auch PHP für den Zugriffsschutz sorgen.
dedlfix.
Danke. Das habe ich begriffen!
Im Web finde ich x Möglichkeiten das zu machen mit PHP Authentfizierung nur das meiste bzw. alles funktioniert nicht so recht. Meine Versuche gingen dahin die .htaccess und .htpasswd mit zu verwenden aber alle Versuche schlugen fehl. (... mit XAMPP)
Kann man irgend etwas empfehlen was unkomplizerit und leicht zu implementieren ist?
Gruss Klaus (... und Danke an die Community die das auch alles mit liest)
Tach!
Kann man irgend etwas empfehlen was unkomplizerit und leicht zu implementieren ist?
Wenn du mit HTTP-Authentication zufrieden bist, muss du eigentlich nur dafür sorgen, dass für alle Zugriffe in den geschützen Bereich der Request vom Browser aus auf ein Script in diesem geschützten Bereich geht. Dann kümmert sich der Apache um die Prüfung der Anmeldedaten, und der Browser darum, sie jedes Mal mitzusenden.
Einfacher gehts nicht. Ein eigenes System läuft darauf hinaus, dass man eine Session eröffnet und über diese den Nutzer wiedererkennt und auch den Anmeldestatus steuert und prüft. Dazu bruahct man schon etwas mehr als drei Zeilen. Eine Empfehlung kann ich nicht geben. Sicherheit ist ein heikles Thema, da will ich nicht mit Halbwissen um die Ecke kommen.
dedlfix.
hi Klaus,
Gruss Klaus (... und Danke an die Community die das auch alles mit liest)
ja hab ich. Du solltest Dir darüber im Klaren sein ob Du Zugriffe auf URLs kontrollieren willst oder Zugriff auf Inhalte. Für Letzteres ist HTTP Auth. völlig ungeeignet.
MfG
Hallo klwild,
erst mal schöne Grüße nach Baar(sehr schöne Gegend), habe einige Zeit in deiner Nachbarschaft(Walchwil) gelebt. <nostalgie>Schöne Erinnerungen 😉</nostalgie>
Mein Problem ist nund das das Verzeichnis /privat/ auf Server Ebene Passwort geschützt ist aber das Popup die Datei /privat/index_privat.php ohne Passwort Abfrage ausführt und es jeder sehen kann welches nicht der Sinn und Zweck des Passwortschutzes ist.
Wenn ich die Datei /privat/index_privat.php direkt als URL aufrufe wird das Verzeichnis Passwort korrekt abgefragt.
Mache ich einen Denkfehler?
Ja, aber wurde dir ja schon erklärt. Die Frage ist aber, was genau hast du denn vor. Du möchtest die Datei includen(*übrigens include_once ist oft ratsamer), zu welchem Zweck? Entweder weil jeder das sehen soll oder nur Du? Wenn ich das richtig deute, möchtest du innerhalb deiner öffentlichen Seite auf private Inhalte zugreifen, die geschützt sind? Da bieten sich natürlich auch Iframes, XMLHttpRequest, usw. an. Liege ich richtig, oder hast du was ganz anderes vor?
Gruss
Henry
Hallo Henry. Danke für dein Interesse.
Der Content in /privat/ sollte nur mir zugänglich sein aber leider wird der wie im 'Imressum' sofort angezeigt, selbst das Menu ist schon zuviel!
.htaccess und .htpasswd funktionieren auf HTTTP Ebene und ich sollte das in PHP implementieren aber alle Versuchen schlugen bisher fehl. Könnte es an XAMPP liegen das ich local zur implemetierung verwende.
Gruss Klaus
Hallo klwild,
Der Content in /privat/ sollte nur mir zugänglich sein aber leider wird der wie im 'Imressum' sofort angezeigt, selbst das Menu ist schon zuviel!
Das Menü, oder der Inhalt der der dann gezeigt werden soll?
Könnte es an XAMPP liegen das ich local zur implemetierung verwende.
Nein, es liegt daran, dass du immer noch versuchst Seiten einzubinden mit htaccess. In Wahrheit ruft der Besucher, in deinem Fall, aber nicht die Seite auf sondern PHP. Und PHP hat bereits die Berechtigung den Inhalt zu sehen, diesen gibt sie dann einfach weiter. Stell dir vor du möchtest einen Safe öffnen, hast aber nicht die Kombination, ein anderer hat die, macht ihn auf lässt ihn offen stehe, wer braucht jetzt noch die Kombination?
Das Ganze mit PHP lösen, ist anders gemeint. Übrigens hier mal hilfreiche Lektüre.
Bevor ich jetzt aber näher drauf eingehe, erst mal klären ob ich dich richtig verstehe. Welche der zwei Möglichlkeiten (wenn überhaupt?)soll geschehen, sobald jemand deine Linksammlung klickt:
Durch htaccess?
oder Loginverwaltung durch zb. PHP
Gruss
Henry
Hallo Henry,
Bevor ich jetzt aber näher drauf eingehe, erst mal klären ob ich dich richtig verstehe. Welche der zwei Möglichlkeiten (wenn überhaupt?) …
Wenn ich das richtig verstanden habe, möchte er allgemein zugängliche und private Inhalte gemeinsam auf der Seite anzeigen, in Abhängigkeit davon, wer die Seite aufruft.
Bis demnächst
Matthias
Hallo Matthias,
Wenn ich das richtig verstanden habe, möchte er allgemein zugängliche und private Inhalte gemeinsam auf der Seite anzeigen, in Abhängigkeit davon, wer die Seite aufruft.
ja das vermute ich auch. Wahrscheinlich läufts dann auf eine Iframe-Lösung hinaus. Möchte aber nochmal sicher gehen und Klaus schrittweise dahin bringen, letztendlich jedoch mit der Empfehlung(auch aus anderen Gründen) das HTML-Einsteigertutorial mal durchzuarbeiten. Wer hat das Tutorial eigentlich erstellt, oder ist das eine Gemeinschaftsarbeit?
Gruss
Henry
Hallo Henry,
Wer hat das Tutorial eigentlich erstellt, oder ist das eine Gemeinschaftsarbeit?
Der Erstentwurf stammt, wenn ich das richtig erinnere, von einer nicht mehr aktiven selferin. Im Verlauf der Zeit wurde es stetig verbessert, die Versionsgeschichten zeigen, dass hier @Matthias Scharwies und MatthiasB maßgeblich dran beteiligt waren.
Bis demnächst
Matthias
Hallo Matthias,
Der Erstentwurf stammt, wenn ich das richtig erinnere, von einer nicht mehr aktiven selferin. Im Verlauf der Zeit wurde es stetig verbessert, die Versionsgeschichten zeigen, dass hier @Matthias Scharwies und MatthiasB maßgeblich dran beteiligt waren.
ah, danke für die Info. Auf jeden Fall sehr gelungene Arbeit. Ich erwähnte bereits, dass ich das zuletzt empfohlen hatte und einer davon hat damit in einer Woche erstaunlich viel Basis gelernt und sogar extrem weiterentwickelt. Er stellt heute oder morgen seine erste Webseite ins Netz, die bereits jetzt so aussieht, als wenn er das schon jahrelang macht.
Also dieses Tutorial === glatte Eins!
Gruss
Henry
Versoin 1 oder 2! Ist mir Egal! Obwohl mir Version 1 besser gefällt.
Gruss Kaus
Hallo klwild,
Ich überlege schon die ganze Zeit, wie ich dir meine Überlegungen näher bringe. Der beste Weg ist anhand eines Beispiels deiner Seite. Aber ich frage mich ob das OK ist, denn schließlich nutze ich dann zwangsläufig auch Content von dir um das zu zeigen. Normalerweise reichen ähnliche Beispiele, hier denke ich eher nicht. Von daher, wäre deine Erlaubnis dazu nicht schlecht.
Und Frage an alle: Ist die Vorgehensweise richtig oder hätte ich das auch ohne Rückfrage posten können/sollen/dürfen?
Gruss
Henry
Hallo Henry.
... jeder Vorschlag ist mir Recht. Ich drehe für mein Wissen an der Uhr und ich komme immer wieder auf das gleiche nicht gewünschte Ergebnis zurück.
Erlaubnis kein Problem! ... aber wofür? Ist alles öffentlich unter klaus-wilde.ch oder was brauchst du?
Grüsse Klaus
Hallo klwild,
... jeder Vorschlag ist mir Recht. Ich drehe für mein Wissen an der Uhr und ich komme immer wieder auf das gleiche nicht gewünschte Ergebnis zurück.
Ja der Grund liegt auch auf der Hand. Dir fehlt einfach Basiswissen.
Wenn ich deine, hmm wie sag ich es nett… ähm ja, eher minimalistische Seite sehe, dann zeigt sich ein riesiges Codeimperium von fremden Scripten, die du nicht mal ansatzweise genug nutzt um den Grund der Einbindung plausibel zu erklären. Gleichzeitig, benutzt du uralte und oft auch noch fehlerhafte Auszeichnungen und vermischt das Ganze, weil irgendwie tut sich ja was, also muss wohl richtig sein, schließlich siehst du ja eine Webseite.
Aber da befindest du dich heutzutage in einer großen Gemeinschaft, viel suchen im Netz, finden hier und da Codebeispiele oft gepaart mit Frameworks wie Lightbox, jquery, usw… und verstehen aber Null vom technischen Aspekt dahinter. Ist dann oft, wie mit Kanonen auf Spatzen schießen.
Jetzt gehst Du sogar noch einen Schritt weiter und benutzt PHP ohne auch nur den Ansatz von HTML/CSS verstanden zu haben. Nur zur Klarstellung, das ist alles nicht böse gemeint! Und was genau machst du da? Du hast bemerkt, dass man mit PHP Inhalte einbinden kann und nutzt das dann auch auf völlig unlogische Weise, denn diese Aufgabe ließe sich in deinem speziellen Fall auch durch Ajax, iframe, etc. sinnvoller bewerkstelligen.
Erlaubnis kein Problem!
Ok. Dann schau mal hier.
----------
Warnung:
Das ist nur ein Beispiel wie dein Vorhaben, gemäß deiner Vorlage und Vorstellung, umzusetzen wäre. Es ist weder barrierefrei noch sonst irgendwie zu empfehlen, aber es reicht wohl um dir ein paar Punkte näher zu bringen.
Es ist eine einzige Datei (Keine fremden Scripte/Frameworks eingebunden) rechte Maustaste Quelltext anzeigen.
Du bindest mit PHP Inhalte ein um sie dann versteckt bereits in deiner Seite zu haben und bei Bedarf durch JS anzeigen zu lassen. Das würde aber im Normalfall nur Sinn machen, wenn die Inhalte dynamisch erzeugt werden und nicht bereits fertig vorliegen, bzw. entweder mit PHP dynamisch einbinden oder vorgefertigt versteckt, dann brauchts aber auch kein PHP.
Und das ist ja der Punkt den du nicht verstanden hast. Du machst das ja mit allen Inhalten, auch den nicht-öffentlichen. Die liegen bereits versteckt(nicht wirklich versteckt nur im Quelltext sichtbar) in deiner Seite drin, weil PHP die dort bereits hinterlegt hat.
Das habe ich jetzt geändert, nur freie Inhalten liegen dort(ohne Korrektur übernommen) und solltest du auch wirklich direkt dort reinschreiben (wenn du absolut bei deiner Vorgehensweise bleiben willst), nicht durch PHP.
Die nicht-öffentliche Seite wird natürlich nicht vorher(auch nicht im Quelltext versteckt) reingeschrieben, sondern innerhalb eines Iframes angezeigt. Das hat für dich zumindest den Vorteil, dass die Servertechnolgie dir den Sicherheitsfaktor vereinfacht, weil das Iframe nur die private Seite an einem anderen Ort (im iframe auf deiner Seite) anzeigt, aber nicht wirklich einbindet und somit erfolgt natürlich auch die Passwortabfrage.
Fazit:
Klar, du kannst jetzt anhand meines Beispiels, deine Seite anpassen oder sogar 1:1 übernehmen. Aber weiter bringt dich das nicht wirklich. Meine Empfehlung für dich ist, dich erst mal auf die Basis zu konzentrieren, sprich zumindest die Basis von HTML lernen, dann CSS, dann Javascript, und dann letztendlich PHP. Und auch wenn sich das langwieriger oder komplizierter anhört als irgendwelche Bausteine im Netz zu puzzlen, es lohnt sich und ist ist nicht so schwer(zumindest das Basiswissen). Aber dann bist du wirklich frei und flexibel mit deinen Vorstellungen, selbst wenn du dann irgendwann auch mal fremde Scripte nutzt, weißt du was die machen.
Gruss
Henry
ps. Mein Beispiel im IE (nicht im FF) gibt beim ersten Mal, wenn du auf privat klickst eine Warnmeldung(nicht weiter schlimm) raus, läd dann neu und daher nochmal klicken. Passiert aber sowieso nicht wenn du den Code bei dir nutzt. Ist nur wegen domainübergreifende Rechte.
Hallo Henry und vielen Dank für deine detaillierten Ausführungen und das Beispiel.
Angefangen hat alles damit das man meinte meine Webseite sei veraltet (Frame Technik) und nicht HTML5 konform. Dann habe ich geschaut und alles mögliche gefunden. Ob sinnvoll oder nicht sei mal dahingestellt.
Ich habe dann in einem Schnellschuss versucht HTML5 zu implementieren was aber wohl nicht so toll geworden ist.
Ich werde mich nun in HTML5, CSS und PHP schlauer machen um das von dir vorgeschlagene zu verstehen, zu begreifen und umzusetzten.
Danke Henry und an das Forum das ich mein Problem hier platzieren durfte und es professionell behandelt wurde.
Gruss Klaus
Hallo klwild,
Danke Henry und an das Forum das ich mein Problem hier platzieren durfte und es professionell behandelt wurde.
Jederzeit gerne wieder. Und wie gesagt, vergiss erst mal PHP, nutze dieses Tutorial-Beispiel für deine neue Seite, bau einen Link ein zu deinem geschützten Verzeichnis(besser wäre zwar nicht, damit nicht mal der Pfad bekannt ist aber wenn es für dich leichter so ist, ist das erst mal ok)
Den Link dorthin macht du allerdings im neuen Tab/Fenster(nicht wie die Beispiel-Links dort) auf, daher so schreiben <a href="privateseite.xyz" **target="_blank">**Privat</a>, denn ich glaube das ist, was dich stört, dass die öffentliche Seite dann nicht parallel offen ist.
Gruss
Henry