• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ausführung per PW-Schutz verhindern, ohne htaccess

F

frank87

Guest
Auch wenn ich jetzt Gefahr laufe, dass mir gesagt wird, dass dieses Thema bereits behandelt wurde...

Hallo Leute,

mein Problem liegt darin, dass ich externe Inhalte inkludiere.

htaccess will bei Strato nicht funktionieren (passwortschutz.pl nicht gefunden) und der Verzeichnisschutzmanager schützt die Datei(-ausführung) nur vor direktem Aufruf, aber nicht, wenn die Datei in einen Content includiert wird.

Folglich habe ich nach einem Script gesucht, dass einen login-Vorgang abspult, bevor die Datei im Content ausführt.

Das Script scheint ähnlich zu dem Script zu sein, was ich später hier im Tutorial-Bereich gefunden habe:

PHP:
<?php
function validateLogin($user, $pwd)
{
    // Array mit gueltigen Usern
    // key = username, value = passwort
    $arrUser = array('Admin' => 'Admin');
    if(array_key_exists($user, $arrUser))
    {
        if($arrUser[$user] == $pwd)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}
if((!isset($_SERVER['PHP_AUTH_USER'])) && (!isset($_SERVER['PHP_AUTH_PW'])) || !(validateLogin($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])))
{
    header( 'WWW-Authenticate: Basic realm="Private"');
    header( 'HTTP/1.0 401 Unauthorized');
?>
<html xmlns="http://www.w3.org/1999/xhtml">
</html>
<?php
    print('<p style="clear:both; text-align: center; padding-top:170px; font-size:20pt; font-weight:bold; color:#FF0000;">login fehlgeschlagen!</p><p style="text-align: center; font-size:10pt; font-weight:bold; color:#000000;">Drücke [F5] und versuche es erneut!</p>');
    exit;
}
else
{
    include('admin.php');
}
?>

Nun das Problem:

Auf meinem lokalen Testserver (XAMPP) läuft die Login-Routine ohne Probleme. Aber auf Strato kann ich 3x Name und PW angeben und bekomme dann die definierte Fehlermeldung, dass der Login fehlgeschlagen ist. :?

Ich finde einfach nicht das Problem, obwohl es sicherlich nur eine Kleinigkeit sein dürfte, damit das Script auf dem Strato-Server läuft.

(Ich habe auch versucht, das PW verschlüsselt einzufügen => ebenfalls Fehlanzeige)


Ich danke für hilfreiche Anregungen...
 
Werbung:
Hallo,

also vorab, such dir ein richtigen hoster.

Ansonst kannst ja mal versuchen
PHP:
$_SERVER['PHP_AUTH_USER']
gegen
PHP:
$_SERVER['REMOTE_USER']
zu teauschen und das gleiche mit
PHP:
$_SERVER['PHP_AUTH_PW']
gegen
PHP:
$_SERVER['REMOTE_PW']

Verzeichnisschutzmanager schützt die Datei(-ausführung) nur vor direktem Aufruf, aber nicht, wenn die Datei in einen Content includiert wird.
na klar was soll es denn sonst machen, was anderes macht .htaccess auch nicht.
Wenn du daten von dein eigenen Server includierst geht der Server davon aus das du als Programiere das auch darfst :O)

Deswegen stelle ich mir gerade die frag was du vorhast und ob das überhaupt sin macht, das soltest dir vielleicht selber noch mal fragen.

Cheffchen
 
Hallo Cheffchen, danke für die Antwort.

Ich werde es nachher mal testen.

Was ich vor habe? - Ganz einfach:

Ich habe eine externe PHP-Datei, die eine Admin-Konsole für ein Veranstaltungskalender-Modul auf der HP beinhaltet. Diese Konsole soll per "Admin-Login" vor Fremdzugriffen geschützt werden, damit die Chefetage diesen Kalender direkt über die HP auch selber pflegen kann. (haben keine Kenntnisse betreffs Uploads usw.)
Über die Konsole werden die Kalenderinhalte bearbeitet und in einer MySQL-Datenbank geschrieben bzw. gelöscht.
 
Werbung:
So, jetzt habe ich mal Cheffchens Vorschlag versucht, wie auch die Routine aus dem Tut getestet.

Der Login schlägt jedes mal fehl... => 3x richtig eingegeben und trotzdem kein Login...
:?

Liegt es an Strato oder liegt es daran, dass ich die externe Konsolen-Datei in den "paßwortgeschützten Bereich" includiere? ...weil auf meinem lokalen Test-Server funktionieren die Routinen ja...
(Ich tippe ja auf ein Problem mit dem Strato-Server)

... Verzweiflung pur, dank mangelnder Kenntnisse (muß mir also anhand Tipps die Sachen anlesen bzw mir bereits fertige Scripte suchen... :oops:)

---

Ach ja, wegen Strato: mir ist der Hoster vorgeschrieben, da es nicht meine eigene Page ist.
 
Hallo,

ok wenn das testest und klappt is ok ansonst vielleicht weiter lesen :O)

ist das dann nicht etwas viel, würde da nicht reichen:
- ein einfaches Formular das die Daten in eine Session speichern wenn berechtigt
- dann head() weiterleitung auf die besagte PHP Datei
- diese prüft ob das richtig in der session steht wenn ja angezeigt und gut
- wenn nein head() weiterleitung zum Formular.

Cheffchen
 
Sorry Cheffchen, da reichen meine Kenntnisse noch nicht aus, so dass ich mich dazu erst belesen müßte. :oops:

Was ich jedoch zum Kalender sagen kann:
Das Kalender-Modul startet bereits eine eigene Session, in der die verschiedenen User-Ansichten-Dateien und die Admin-Konsole ausgeführt werden.

Alle für den kalender benötigten Scripte (Dateien) liegen in einem Unterverzeichnis der HP, so dass keine externen Sachen geladen werden müssen. Auch wird die MySQL-Datenbank von Strato verwendet.
(Also ohne der PW-Abfrage funktioniert auf Strato alles einwandfrei. Es hängt also nur an dem login-Script)


Ich verstehe nur nicht, warum die beiden getesteten Scripte für den Login bei mir auf meinem Test-Server (XAMPP) einwandfrei funktionieren, aber auf Strato der Login permanent fehl schlägt.
Eigentlich müßten doch beide Server (Test und Strato) gleich funktionieren, oder?
 
Werbung:
Hallo,

igentlich müßten doch beide Server (Test und Strato) gleich funktionieren, oder?
meistens aber auf kein fall bei strato :O)

OK wenn das mit session zu hoch ist geh doch einfach mal ein schritt zurück.
Was gefällt dir an dem PW schutz von strato?
das mit dem include habe ich nicht verstanden was dir daran stört?
Mach doch einfach mal den PW schutz und log dich ein und ruf eine php datei auf die auch phpinfo(); enthält, dann so bekommst alle wichtigen daten ausgegeben. Jetzt brauchst bloss nach dem Benutzer name suchem mit STRG+F und weist wie die Variable heissen muss (es kann ofter vorkommen) und damit kannst dann weiter Arbeiten wenn das überhaupt brauchst.

Cheffchen
 
Session könnte ggf nicht klappen...

Wie ich schon sagte startet das Kalendermodul durch die im Sidebar bereits includierte kleine Kalenderansicht eine Session, sobald die Startseite der HP betreten wird.

Wenn im Content eine weitere Ansicht per include gestartet wird, welche ebenfalls eine Session starten will, kommt die Fehlermeldung (sinngemäß) "Session wurde bereits gestartet..."
Deaktiviere ich in den in den Content zu ladenen Kalenderansichten-Dateien die Zeile "session_start()", dann gibt es daraufhin keine Fehlermeldungen mehr, wenn die Ansichtendatei geladen wird.

---

Was gefällt dir an dem PW schutz von strato?
Gegenfrage: Darf ich mal lachen?

Wieso dieses? - Deswegen:

htaccess funktioniert garnicht, da die im Strato-Tut genannte Datei passwortschutz.pl nicht dort zu finden ist, wo sie sein soll. => Somit keine "Admin"-Definitionen möglich...

Der (alternative) Verzeichnisschutzmanager von STRATO schützt aber nur das Verzeichnis und die darin enthaltenen Dateien vor direktem Zuggriff auf den Ordner (ohne erfolgreichem Login keine Auflistung der Dateien im Ordner bzw keine direkte (exclusive) Anzeige/Ausführung der Datei im Browserfenster), aber nicht vor der Ausführung, wenn die Datei aus dem geschützten Bereich includiert wird.

das mit dem include habe ich nicht verstanden was dir daran stört?

Ich möchte, dass eine bestimmte Datei nur von bestimmten, autorisierten Personen im Content nach einer Login-Routine angezeigt/ausgeführt werden kann und unberechtigte User diese Datei nicht in den Content laden können.

Bei dieser Datei handelt es sich um eine mit zusätzlichen Script-Verknüpfungen erweiterte Ansichten-Datei des Kalenders, mit der die Kalenderpflege ermöglicht wird. (Sozusagen die Admin-Konsole des Kalenders)
Ist ja wohl klar, dass man diese Edit-Funktionen vor Mißbrauch durch Unbefugte schützen will, oder?
(Ohne Zugriffsverhinderung per PW könnte ja jeder Hans und Franz Sachen in den Kalender eintragen oder löschen...)


Mich stört also, dass Unbefugte diese "sensible" Datei ohne Autentifikation ausführen können.
Deswegen ja die zusätzliche Login-Datei zur Autentifikation des Users, um eine Ausführungsverhinderung für Unbefugte zu erreichen.

Aber leider blockt bei STRATO irgend etwas den Login-Vorgang, so das alle -auch der berechtigte Admin trotz richtiger Autentifikation- keinen Zugriff auf diese durch das Login-/PW-Script geschützte Datei erhalten. :-?


Ich suche also das Problem, wieso STRATO die Autentifikation des Admins nicht akzeptiert, wohl aber auf meinem eigenen Testserver der Login-Vorgang einwandfrei abläuft und die Konsole anschließend im Content geöffnet wird.

Gruß Frank
 
Hallo,

ok nur kurz di fakten:
- htaccess schutzt nicht vor include.
- der Srato PW schutz bestimmt auch nicht da der bestimmt gleiche technik nutzt.
+ du möchtest das nur bei bestimmte Usern was includiert wird?

merkst was, das was möchtest geht mit nur einfach so nicht.
Hast das von mein letzten beitrag gemacht?
Schutze mal ein ordern und pack ein php rein mit phpinfo(); dann wird viel angezeigt wenn die einlogst, such nach dem benutzer namer und dann weist die Variable.

Dann kannst deine Hauptseite Schutzen und beim include machst dann eine einfache prüfung.
PHP:
<?php
if($_SERVER['REMOTE_USER'] == "Schulze"){
include 'geschutzte_datei.php';
}
?>

Das mit Session ist klar, zweimal start geht nicht da einmal reicht.

Cheffchen
 
Werbung:
Hallo,

ok nur kurz di fakten:
- htaccess schutzt nicht vor include.
- der Srato PW schutz bestimmt auch nicht da der bestimmt gleiche technik nutzt.
+ du möchtest das nur bei bestimmte Usern was includiert wird?

Das trifft es nicht ganz... Die beiden Minus-Sachen sind soweit richtig.

Den Usern soll mit Ausnahme einer einzigen Datei alles Andere angezeigt werden, was per include geladen wird. Diese eine Datei ("Konsole") soll dann aber nur nach einer erfolgten Autentifikation angezeigt werden.

merkst was, das was möchtest geht mit nur einfach so nicht.
Hast das von mein letzten beitrag gemacht?
Schutze mal ein ordern und pack ein php rein mit phpinfo(); dann wird viel angezeigt wenn die einlogst, such nach dem benutzer namer und dann weist die Variable.

Zu dem Test werde ich wohl voraussichtlich erst am Wochenende kommen...
Werde es aber mit Sicherheit testen.

Dann kannst deine Hauptseite Schutzen und beim include machst dann eine einfache prüfung.
PHP:
<?php
if($_SERVER['REMOTE_USER'] == "Schulze"){
include 'geschutzte_datei.php';
}
?>

Die Hauptseite (index.php) soll frei (von Login-Vorgängen) zugänglich sein.
Es geht alleine nur um die Zugriffsverhinderung auf die Konsolen Datei selber.



Ich möchte eigentlich genau das erreichen, was in den hiesigen Foren-Tutorials zu dem Script steht:
http://www.html.de/tutorials/21627-http-auth-ohne-htaccess.html

... und habe auch Slibbo sein Script getestet, wie er es lösen würde.
Das Anmeldefenster wird zwar angezeigt... Aber ich kann da jetzt 3x erfolglos die richtigen Login-Daten angeben und bekomme dann die Fehlermeldung, weil der Zugriff trotz richtiger Angaben verweigert wurde

Oder liegt es vielleicht daran, dass dieses Script und die zu schützende Datei im selben Ordner liegen?
 
Uns wurde durch die Stadt das Paket "BasicWEB XL" zur Verfügung gestellt.

Laut den Aussagen von Strato ist mit den Strato-eigenen Schutzmechanismen kein Schutz einzelner Dateien, sondern nur ganzer "Bereiche" (Ordner/Unterordner) möglich.
 
Werbung:
Nochmal:
Das geht nicht mit htacess und auch nicht mit diesem Strato PW Schutz, welcher das selbe wie htaccess ist.

Daher die Lösung:
Die Datei die nicht aufgerufen werden soll muss bevor sie irgendetwas ausgibt oder lädt prüfen, ob der Nutzer der darauf zugreift das überhaupt darf. Wenn nicht, dann wird er weitergeleitet. Wenn er darf, dann lädt die Datei normal weiter.

Abhängig von deinem Loginsystem (was nicht mod_auth ist) müsste das mit folgenden Zeilen möglich sein:

PHP:
<?php
if( !nutzerangemeldet )  {
 // darf nicht zugreifen und wird auf index.php weitergeleitet
 header("Location: index.php");
}

?>ok, darf zugreifen

Die Bedingung !nutzerangemeldet musst Du nun selbst definieren.

Leichter als das geht es nicht. Wenn es dir immernoch zuviel ist, beauftrage doch jemanden der dir das programmiert.
 
Ich weiß jetzt nicht, ob ich falsch verstanden wurde...

Das von mir verwendete Anmelde-Script funktioniert auf meinem lokalen "Test"-Server einwandfrei. => der erfolgreiche Login leitet mich auf die Konsolendatei weiter.
(Auch das hier im TUT stehende Script macht auf meinem Testserver das, was es machen soll)

ABER:
Auf STRATO öffnen beide Scripte zwar das Login-Fenster, jedoch erfolgt trotz richtiger Eingabe der Login-Daten kein Login, so wie es auf dem Testserver geschieht.

Da das Script auf anderen Servern problemlos läuft, scheint das Problem also bei STRATO zu liegen... (Schutzmechanismen?)
Die Frage ist nur wo das von STRATO verursachte Problem liegt und wie ich es umgehen kann, damit mein Login erfolgreich?

Auch die von Cheffchen vorgeschlagene Änderungen (
PHP:
$_SERVER['PHP_AUTH_USER']
durch
PHP:
$_SERVER['REMOTE_USER']
, sowie
PHP:
$_SERVER['PHP_AUTH_PW']
durch
PHP:
$_SERVER['REMOTE_PW']
zu ersetzen) brachten keine Erfolge. Im Gegenteil! Da spuckt sogar mein Testserver! (kein Login)

Ich vermute daher einen Schutzmechanismus bei STRATO, den ich austriksen muß, damit meine Anmeldung anerkannt wird.
 
Vielleicht gibts ja bei Strato mit dem Superglobalen-_SERVER-Array ein Problem. Schreib doch einfach ein "normales" Login mit Eingabefeldern und Session.
 
Werbung:
Cheffchen, ich hatte ja gesagt, dass ich es voraussichtlich erst am WE schaffen würde...

Hab's aber jetzt doch durchgezogen und finde 2 Variablen (?)

_SERVER["REMOTE_USER"]
und
_ENV["REMOTE_USER"]

Also sollte es dann ja der REMOTE_USER sein, richtig?

Auch wenn ich REMOTE_USER antatt PHP_AUTH_USER verwende und auch dann PHP_AUTH_PW durch REMOTE_PW ersetze ist kein Login möglich...

3x richtig eingegeben und trotzdem Fehler.

Muß das PW im SCRIPT MD5-verschlüsselt oder Klartext hinterlegt sein?

Gibt es sonst noch Einstellungen, die ggf Einfluß auf das PHP-Script haben könnte? (z.B. eine php.ini-Anweisung? Wenn ja welche Einstellung müßte ich ändern? - nein, ich habe nirgends eine php.ini stehen und müßte dann über ini_set diese Einstellung(en) setzen.)

--------------

Wegen dem Strato-FAQ:
Genau den Artikel habe ich ja abgearbeitet und bin dann an der fehlenden passwortschutz.pl gescheitert... :(

Deswegen habe ich ja den Verzeichnisschutzmanager benutzt.

Ich werde aber trotzdem mal die Inhalte der vom VSM angelegten Dateien anschauen und testen, ob da nicht doch die Möglichkeit besteht, <FILES zuschützende.php> in der vom VSM angelegten .htaccess benutzen zu können...

Guß Frank
 
Zuletzt bearbeitet von einem Moderator:
Ähm... müßte bei phpinfo nicht auch das PW mit angezeigt werden?

Ich finde unter der Zeile "...REMOTE_USER | Admin" nur "...AUTH_TYPE | Basic"
 
Werbung:
Da mir weitere Unterstützung bei der Fehlersuche fehlt, gebe auf!

(Das Thema kann geschlossen werden)

An die Administration:
Bitte löscht mein Account!

=> Wenn sich solche sinngemäßen Antworten wie "Wenn du das nicht kannst, dann lasse es dich von jemanden programmieren" nun Hilfe für Anfänger nennt...

Ich htte mich hier eigentlich angemeldet, um was zu lernen und nicht ständig solche Sprüche zu lesen...

Danke, aber anscheinend bin ich dann hier im falschen Forum gelandet... :-?
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

ok das ist ein Forum und kein Chat und Wochenende da sitze zumindest ich nicht immer vor derm Rechner und Geschäftlich ist das hier auch nicht und kann man ruhig mal am WE 24h warten bis eine Antwort kommt und ich zeit finde hier kostenfrei in meiner freizeit zu helfen, selbst wenn mich persönlich nicht gemeint hast.

Also einfach sucht euch richtigen hoster nicht der St oder der Pinke sondern halt was richtiges, damit lösen sich schon einige probleme.

Cheffchen
 
Zurück
Oben