Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Seite mit Login schützen

Begonnen von Promoz, 05. November 2009, 12:54:14

« vorheriges - nächstes »

Promoz

Ich schütze bestimmte Inhaltsseiten mit einer Passwortabfrage, für die ich ein benutzerdefiniertes Syntaxelement, etwas PHP und weiter nichts benötige.

Versuch macht klug auf http://www.progt.de (Testeiten 1 bis 3). Anmelden mit Test und Test.

Promoz


Benutzerdefiniertes Syntaxelement:

Zitatusersess = <div class="usersess">{VALUE}</div>
oder
Zitatusersess = <div style="display:none">{VALUE}</div>

Einbinden in Inhaltsseite:

[php|session_start();
$_SESSION^["_catpage_"^] = "index.php?cat={CATEGORY}&page={PAGE}";
$_SESSION^["_pageurl_"^] = "kategorien/{CATEGORY}/{PAGE_FILE}";
include("myphp/usersess/usersess.php");]
[usersess|[ueber1|Testseite 1]
Eine [fett|wunderbare] große Heiterkeit hat meine <h2>ganze Seele</h2> eingenommen, gleich den süßen Frühlingsmorgen, die ich mit <b>ganzem Herzen</b> genieße. Ich bin allein und freue mich meines Lebens in dieser Gegend, die für solche Seelen geschaffen ist wie die meine. Ich bin so glücklich, mein Bester, so ganz in dem Gefühle von ruhigem Dasein versunken, daß meine Kunst darunter leidet. <br /><b>Ich</b> könnte jetzt nicht zeichnen, nicht einen Strich, und bin nie ein größerer Maler gewesen als in diesen Augenblicken. Wenn das liebe Tal um mich dampft, und die hohe Sonne [kursiv|an der Oberfläche der undurchdringlichen Finsternis] meines Waldes ruht, und nur einzelne Strahlen sich in das innere Heiligtum stehlen, ich dann im hohen Grase am fallenden Bache liege, und näher an der Erde tausend mannigfaltige Gräschen mir merkwürdig werden; wenn ich das der <a href='http://www.spexard.de'>(Link nach Spexard)</a> kleinen Welt zwischen Halmen, die unzähligen, unergründlichen Gestalten der Würmchen, der <h1>Mückchen</h1> näher an meinem Herzen fühle, und fühle die Gegenwart des Allmächtigen, der uns nach seinem Bilde schuf, das Wehen des Alliebenden, der uns in ewiger Wonne schwebend trägt und erhält; mein Freund! Wenn's dann um meine Augen dämmert, und die Welt um mich her und der Himmel ganz in meiner Seele ruhn wie die Gestalt einer...<br />
[fett|Dies ist ein Typoblindtext.] An ihm kann man sehen, ob alle Buchstaben...
]

Die Datei usersess.php

<?php$_SESSION["_sid_"] = session_id();require_once("usersessconf.php");if($_REQUEST["_logout_"]):	$_catpage = $_SESSION["_catpage_"];  $_SESSION = array();  if(isset($_COOKIE[session_name()])):  	setcookie(session_name(), '', time()-42000, '/');  endif;	session_destroy();  header("Location:$_catpage");endif;if($_REQUEST["_login_"]):	if(UserCheck($_REQUEST["_username_"],$_REQUEST["_userpw_"])):    $_SESSION["_logok_"] = true;	else:  	$_SESSION["_logok_"] = false;    $_fehler = "<span style='color:#6F6F6F;font-weight:bold'>Login-Fehler!<span>";  endif;endif;if($_SESSION["_logok_"] == true):	echo ReadDat($_SESSION["_pageurl_"]);	echo "<br /><br /><div>".			 "<form name='logout_form' action='$PHP_SELF' method='post'>".			 "<input class='uss_logformsubmit' type='submit' name='_logout_' value='Abmelden'>".			 "</form>".       "</div>";else:	echo "<div class='uss_loginform'>".       "<form name='login_form' action='$PHP_SELF' method='post'>".       "<table class='uss_loginform'>".       "<tr><td class='uss_loginformtext' colspan='2'>".  		 "Für diese Seite bitte einloggen:".       "</td></tr>".       "<tr><td class='uss_loginformtext' colspan='2'>".       substr(strrchr($_SESSION["_catpage_"],"_"),1).       "</td></tr>".       "<tr><td class='uss_loginform'>".  		 "Name:".       "</td><td class='uss_loginform'>".       "<input class='uss_loginform' name='_username_' type='text' size='20' value=''>".  		 "</td></tr><tr><td class='uss_loginform'>".       "Passwort:".       "</td><td class='uss_loginform'>".       "<input class='uss_loginform' name='_userpw_' type='password' size='20' value=''>".       "</td></tr><tr><td style='text-align:right' colspan='2'>".       "<input class='uss_logformsubmit' type='submit' name='_login_' value='Anmelden'>".       "</td></tr>".       "</table>".       "</form>".			 $_fehler.       "</div>";endif;function UserCheck($_name,$_pw){  $_name = trim($_name);  $_pw = trim($_pw);  $_userall = file(USERSESS_DIR."/usersesspw.php");	for($_i=0;$_i<count($_userall);$_i++):    if(substr(trim($_userall[$_i]),0,1) != ".") continue;    list($_a,$_b,) = explode("|",trim($_userall[$_i]));    if(substr($_a,1) == $_name && $_b == md5($_pw)):    	return true;    else:    	continue;    endif;	endfor;  return false;}function ReadDat($_dat){  $_content = file_get_contents($_dat);  $_content = substr(trim($_content),strpos($_content,"[usersess|")+10);  $_content = substr($_content,0,strrpos($_content,"]"));  return $_content;}?>

Die Datei usersesspw.php

<?phpif(substr_count($_SERVER["REQUEST_URI"],"usersesspw.php") != 0):	header("Location:index.php");endif;?>


// Ab hier Usereinträge: (Dot)Name|MD5-Passwortcode

.Test|0cbc6611f5540bd0809a388dc95a615b

Die Datei usersessconf.php

<?phpif(substr_count($_SERVER["REQUEST_URI"],"usersessconf.php") != 0):	header("Location:index.php");endif;// Ab hier Konfigurations-Einstellungen// definieren oder bearbeitendefine("USERSESS_DIR","myphp/usersess");?>

minimalibu

#1
Tach auch.

Genau so etwas suche ich  :D

@azett: Wird die Login Lösung der Coder ähnlich aussehen?

Guido

Hermann

#2
Nein. Der für Version 1.12 derzeit geplante Mechanismus ist viel einfacher als der hier präsentierte. Wir wollten im ersten Ansatz auf Sessions gänzlich verzichten. Das hat mehrere Gründe, u.a. wurde uns schon vermehrt von Problemen mit Sessionmanagement auf verschiedenen Hostern berichtet, außerdem müsste der Besucher cookies Akzeptieren oder moziloCMS müsste die Sessionid durch die Links mitschleifen.

Promoz

#3
Zitat von: "Hermann"Nein. Der für Version 1.12 derzeit geplante Mechanismus ist viel einfacher als der hier präsentierte. Wir wollten im ersten Ansatz auf Sessions gänzlich verzichten. Das hat mehrere Gründe, u.a. wurde uns schon vermehrt von Problemen mit Sessionmanagement auf verschiedenen Hostern berichtet, außerdem müsste der Besucher cookies Akzeptieren oder moziloCMS müsste die Sessionid durch die Links mitschleifen.

Das hört sich gut an. Jede halbwegs sichere ,,Login"-Lösung, die via MoziloCMS-Originalcode gefunden wird, ist sicher besser.
Ich habe versucht - bis es soweit ist -, mit recht einfachen Mitteln eine ,,aufgesetzte" Variante zu realisieren, die immerhin funktioniert. Vor ,,Hackern" sicher ist diese selbstverständlich nicht, und deshalb nicht für das ,,Verstecken" von Inhaltsseiten mit besonders sensiblen Daten geeignet. Aber für den ,,Normalfall"  sollte es reichen.

Promoz

azett

#4
Wow - tolle Arbeit, Promoz! :)

1.12 wird, wie Hermann schon sagte, einen (einfacheren) Schutzmechanismus mitbringen - aber auch die Fähigkeit, Plugins einzubinden. Und ich denke, daß man deinen Umbau mit wenigen Handgriffen zu einem solchen Plugin machen könnte - was man dann im CMS einbinden kann, ohne Standard-Code anfassen zu müssen. Schau dir den Plugin-Mechanismus mal an*, ich denke, das ist nicht viel Arbeit.

* Momentan arbeiten wir noch an Feinheiten...ich denke mal, daß Ende dieses, Anfang nächstes Jahres die Betatests losgehen...dann wird es auch noch eine ausführliche Dokumentation der Plugin-Schnittstelle geben.

AndreHa

#5
Sehr schön, das würd ich auch gern probieren :-)

Wo müssen denn die Dateien

usersess.php
usersesspw.php
usersessconf.php

hin?

Micha

#6
Wenn ich das so richtig einschätze musste dir im Hauptverzeichnis einen Ordner myphp und ein Unterverzeichnis usersess erstellen und dort dann die php Seiten reinwerfen.

rolinux

#7
Hallo mozilo-Team,

dazu habe ich jetzt mal ein paar grundsätzliche Fragen:

1. einfacher: Heißt das, dass der mozilo-Passwortschutz unsicherer sein wird oder dass er zwar mind. genauso sicher ist, aber einfacher (=efizienter) umgesetzt ist?

2. Wenn ich das hier so lese, habe ich das Gefühl, dass es für passwortgeschützte Bereiche einer Homepage weiterhin am besten ist, wenn man eine eigene mozilo-Installation aufsetzt und die mit .htaccess schützt. Ist das so richtig?

Gruß
rolinux
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

azett

#8
Zitat von: "rolinux"1. einfacher: Heißt das, dass der mozilo-Passwortschutz unsicherer sein wird oder dass er zwar mind. genauso sicher ist, aber einfacher (=efizienter) umgesetzt ist?
Einfacher heißt hier wirklich nur "einfacher", keinesfalls "unsicherer". Wirst sehen :)

Zitat von: "rolinux"2. Wenn ich das hier so lese, habe ich das Gefühl, dass es für passwortgeschützte Bereiche einer Homepage weiterhin am besten ist, wenn man eine eigene mozilo-Installation aufsetzt und die mit .htaccess schützt. Ist das so richtig?
Nicht zwangsläufig - je nachdem, was du dir vorstellst, eignen sich alle drei Ansätze gleichermaßen.

rolinux

#9
Zitat von: "azett"
Zitat von: "rolinux"1. einfacher: Heißt das, dass der mozilo-Passwortschutz unsicherer sein wird oder dass er zwar mind. genauso sicher ist, aber einfacher (=efizienter) umgesetzt ist?
Einfacher heißt hier wirklich nur "einfacher", keinesfalls "unsicherer". Wirst sehen :)
Das freut mich.

Zitat von: "azett"
Zitat von: "rolinux"2. Wenn ich das hier so lese, habe ich das Gefühl, dass es für passwortgeschützte Bereiche einer Homepage weiterhin am besten ist, wenn man eine eigene mozilo-Installation aufsetzt und die mit .htaccess schützt. Ist das so richtig?
Nicht zwangsläufig - je nachdem, was du dir vorstellst, eignen sich alle drei Ansätze gleichermaßen.
Was ich mir vorstelle: Einen Passwortschutz, der genauso sicher ist wie .htaccess, den ich aber innerhalb einer mozilo-Installation so verwenden kann, dass einzelne Seiten geschützt werden können, aber nicht alle. Der klassische "Mitgliederbereich" also, in dem auch durchaus sensible Daten stehen können wie z.B. eine Adressenliste oder das Protokoll der letzten Vorstandssitzung.

Gruß
rolinux
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

Promoz

#10
Zitat von: "AndreHa"Sehr schön, das würd ich auch gern probieren :-)

Wo müssen denn die Dateien

usersess.php
usersesspw.php
usersessconf.php

hin?

In welches Verzeichnis die usersess-Dateien kopiert werden, ist im Grunde egal. Es muss nur mit dem Eintrag in der Datei usersessconf.php übereinstimmen. Die einzelnen usersess-Dateinamen  dürfen nicht geändert werden.

Die Userdaten in der Datei usersesspw.php müssen ,,per Hand" mit einem Texteditor ergänzt/bearbeitet/gelöscht werden. Ein ,,." als erstes Zeichen in jeder User-Zeile ist unbedingt erforderlich. Das Trennzeichen zwischen Username und MD5-Userpasswort ist ein "|". Für die MD5-Verschlüsselung des Passworts gibt es entsprechende Tools im Internet.

Weil es Probleme gibt mit den ,,geschützten" Inhaltsseiten bei der CMS-Suche, empfehle ich, diese Inhaltsseiten als ,,versteckt" zu kennzeichnen. Um sie trotzdem zur Verfügung zu stellen, müssen sie  als Link in die Website eingebaut werden.

So weit. Aber wir warten ja alle gespannt auf die MoziloCMS-Login-Lösung - dann hat sich meine Variante sicherlich erledigt.

Promoz

azett

#11
Zitat von: "rolinux"Was ich mir vorstelle: Einen Passwortschutz, der genauso sicher ist wie .htaccess, den ich aber innerhalb einer mozilo-Installation so verwenden kann, dass einzelne Seiten geschützt werden können, aber nicht alle. Der klassische "Mitgliederbereich" also, in dem auch durchaus sensible Daten stehen können wie z.B. eine Adressenliste oder das Protokoll der letzten Vorstandssitzung.
Diese Sicherheit ist bei allen drei Lösungen gewährleistet: Wer das Paßwort nicht kennt, sieht die Inhalte nicht.

Ich persönlich würde für einen klassischen Mitgliederbereich am ehesten mit .htaccess arbeiten, weil man da ohne Login überhaupt nichts sieht - bei den integrierten Lösungen ist ja immerhin der Name der geschützten Inhaltsseite erkennbar.


Zitat von: "Promoz"Aber wir warten ja alle gespannt auf die MoziloCMS-Login-Lösung - dann hat sich meine Variante sicherlich erledigt.
Keinesfalls! Im Gegenteil, sie stellt die nächste Stufe unserer (einfacheren) Schutzlösung dar und sollte auf jeden Fall als Plugin verfügbar sein.

AndreHa

#12
Hallo.

Ich hab das jetzt mal ausprobiert:

Die Dateien
usersess.php
usersesspw.php
usersessconf.php

sind im Verzeichnis ./myphp/

Beide Einträge für die benutzerdefinierten Syntaxelemente hab ich probiert (nicht gleichzeitig!).


Die Inhaltsseite enthält 1:1 das hier gepostete.
(Kleine Anpassung in der 4. Zeile:
   include("myphp/usersess.php");] statt
   include("myphp/usersess/usersess.php");]


Leider wird auf der Seite  ( http://www.s-wie-sparen.com/index.php?c ... ge=03_test )
die Syntax nur als Text angezeigt.

Nach meinem Verständnis sind da 2 Knackpunkte:
1) wo wird USERSESS_DIR. gesetzt? (das hab ich ja ein bisschen anders..)
2) Es wird  das Syntaxelement [php| ] verwendet... das ist aber auch nicht Standard, oder?
Jedenfalls denke ich, dass das der Grund ist, warum bei mir nur Text angezeigt wird.

Hat das vielleicht noch jemand probiert? Funktioniert's bei euch?

Andre

caga

#13
Hallo,

um das php-Syntaxelemt verwenden zu können, muss dieses erst "aktiviert" werden. Wie das funktioniert, steht in der Dokumentation.
Gruß,
Carsten

AndreHa

#14
OK danke ;-)
Jut, dann werd ich das heute abend ausprobiern; -komme leider von hier aus nicht per ftp auf den server :-(