phpbb/sicheres login programmieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beispiel
beitrag
benutzername
bill
bit
depp
fragen
inhalt
kenntnis
kennwort
klartext
knack
listen
manual
operator
pawort
schauen
session
sicheren login
vergleich
-
Mehrere Fragen:
bei phpbb foren gibt es eine sicherheitsl?cke(siehe: http://www.phpbb.com/phpBB/viewtopic.php?f=14&t=267563) dort steht man soll
if( $sessiondata['autologinid'] == $auto_login_key )
durch
if( $sessiondata['autologinid'] === $auto_login_key )
ersetzten.
Daher meine erste frage: was bewirkt das === 3fache gleichzeichen?. Ich kenn nur das einfache(Zuweisung) und das zweifache (Vergleich)
2. Frage:
Was sollte man bei einem sicheren login(nat?rlich mit html und php) alles beachten (programmtechnisch)?
Mfg disod -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mehrere Fragen:
bei phpbb foren gibt es eine sicherheitsl?cke(siehe: http://www.phpbb.com/phpBB/viewtopic.php?f=14&t=267563) dort steht man soll
if( $sessiondata['autologinid'] == $auto_login_key )
durch
if( $sessiondata['autologinid'] === $auto_login_key )
ersetzten.
Daher meine erste frage: was bewirkt das === 3fache gleichzeichen?. Ich kenn nur das einfache(Zuweisung) und das zweifache (Vergleich)
2. Frage:
Was sollte man bei einem sicheren login(nat?rlich mit html und php) alles beachten (programmtechnisch)?
Mfg disod
so weit cih weiss gibt es keine 3 befehle in einer if abfrage deswegen w?rde ich denken die haben sich evrtippt oder was neues endeckt was ich jetzt auchw issen will, cih w?rde es erstmall lasse.
MfG
KRaeusi -
schau mal auf: http://de3.php.net/manual/de/language.operators.comparison.php
nur den unterschied zwischen === und == peil ich net
In PHP gibt es zwei Arten, Variablen zu vergleichen. Zun?chst mit ==. Damit pr?ft man, ob der Inhalt zweier Variablen der gleiche ist. Manchmal reicht das nicht, und man vergleicht mit ===. So stellt man fest, ob nicht nur der Inhalt, sondern auch der Typ Variablen der gleiche ist. -
schau mal auf: http://de3.php.net/manual/de/language.operators.comparison.php
nur den unterschied zwischen === und == peil ich net
In PHP gibt es zwei Arten, Variablen zu vergleichen. Zun?chst mit ==. Damit pr?ft man, ob der Inhalt zweier Variablen der gleiche ist. Manchmal reicht das nicht, und man vergleicht mit ===. So stellt man fest, ob nicht nur der Inhalt, sondern auch der Typ Variablen der gleiche ist.
?
was n?tzt mir es wenn cih den typ vergleiche und welchen genaueren sinn aht das, kannste mal bitte das erkl?#ren?
MfG
Kraeusi -
Wenn du PHP verstehen w?rdest, w?sstest du es:
Beispiel:
Du willst irgendwas machen, wenn strlen($x) == 0.
Code:
if(strlen($x) == 0)
{
}
Wenn $x aber jetzt eine Ressource ist, wird false ausgegeben. (false == 0)
Jetzt wird die Ressource bearbeitet, es k?nnte Fehler geben oder das System wird kompromittiert.
Wenn die Bedingung jetzt
if(strlen($x) === 0)
{
}
lautet, dann wird die schleife nur durchlaufen, wenn strlen($x) ein Integer-Wert hat.
Logisch.
PS: Don't feed the Troll. -
Beispiel f?r die langsam Denkenden:
$a = 5;
$b = '5';
// 5 und '5' sind von verschiedenem Typ
if($a == $b) print("Gleicher Wert!");
if($a === $b) print("Gleicher Typ!");
else print("Ungleicher Typ");
Zus?tzlich zum Link von thoba ist auch dieser hier aufschlussreich:
http://de.php.net/manual/de/types.comparisons.php
====================================
2. Frage:
Was sollte man bei einem sicheren login(nat?rlich mit html und php) alles beachten (programmtechnisch)?
1. ?bertragung des Passwortes verschl?sseln (Geht nur, wenn der Server SSL unterst?tzt).
2. Die auf dem Server abgelegten Passw?rter verschl?sseln (z.B. mit crypt()).
3. Mindestl?ngen vorsehen, m?glichst verschiedene Zeichen vorsehen, Passwort darf nicht gleich dem Usernamen sein. Das alles kann man bei der Passwortvergabe abfragen und "bem?ngeln", so dass die User dazu erzogen werden, sicherere Passw?rter zu nehmen.
MfG
alopex
-
Beispiel f?r die langsam Denkenden:
$a = 5;
$b = '5';
// 5 und '5' sind von verschiedenem Typ
if($a == $b) print("Gleicher Wert!");
if($a === $b) print("Gleicher Typ!");
else print("Ungleicher Typ");
Zus?tzlich zum Link von thoba ist auch dieser hier aufschlussreich:
http://de.php.net/manual/de/types.comparisons.php
====================================
2. Frage:
Was sollte man bei einem sicheren login(nat?rlich mit html und php) alles beachten (programmtechnisch)?
1. ?bertragung des Passwortes verschl?sseln (Geht nur, wenn der Server SSL unterst?tzt).
2. Die auf dem Server abgelegten Passw?rter verschl?sseln (z.B. mit crypt()).
3. Mindestl?ngen vorsehen, m?glichst verschiedene Zeichen vorsehen, Passwort darf nicht gleich dem Usernamen sein. Das alles kann man bei der Passwortvergabe abfragen und "bem?ngeln", so dass die User dazu erzogen werden, sicherere Passw?rter zu nehmen.
MfG
alopex
Es gibt ein Javascript, mit dem kann man das Kennwort vor dem ?bertragen md5-verschl?sseln (128 Bit wenn ich mich nicht irre.) -
Beispiel f?r die langsam Denkenden:
$a = 5;
$b = '5';
// 5 und '5' sind von verschiedenem Typ
if($a == $b) print("Gleicher Wert!");
if($a === $b) print("Gleicher Typ!");
else print("Ungleicher Typ");
Zus?tzlich zum Link von thoba ist auch dieser hier aufschlussreich:
http://de.php.net/manual/de/types.comparisons.php
====================================
2. Frage:
Was sollte man bei einem sicheren login(nat?rlich mit html und php) alles beachten (programmtechnisch)?
1. ?bertragung des Passwortes verschl?sseln (Geht nur, wenn der Server SSL unterst?tzt).
2. Die auf dem Server abgelegten Passw?rter verschl?sseln (z.B. mit crypt()).
3. Mindestl?ngen vorsehen, m?glichst verschiedene Zeichen vorsehen, Passwort darf nicht gleich dem Usernamen sein. Das alles kann man bei der Passwortvergabe abfragen und "bem?ngeln", so dass die User dazu erzogen werden, sicherere Passw?rter zu nehmen.
MfG
alopex
thx habs gerafft...
danke
MfG
Kraeusi -
lordoflima schrieb:
[...]
Es gibt ein Javascript, mit dem kann man das Kennwort vor dem ?bertragen md5-verschl?sseln (128 Bit wenn ich mich nicht irre.)
Nein Lord, du irrst nicht!
-> http://aktuell.de.selfhtml.org/artikel/javascript/md5/
disod schrieb:
[...]
2. Frage:
Was sollte man bei einem sicheren login(nat?rlich mit html und php) alles beachten (programmtechnisch)?
Mfg disod
Einen wirklichen sicheren Login kannst du nicht machen!
Es kann so gut wie alles geknackt werden, aber man keinen einen guten Schutz einbauen.
Am besten die ?bertragung der Passw?rter ?ber SSL senden, wie Alopex schon sagte. Wenn das nicht geht, dann das Javascript hinter dem o.g. Link benutzten.
Eine eigene Einweg Vershl?sselung ist meist auch besser, da es dann keine fertigen Programme zum knacken gibt.
Das Passwort kann man auch mehrmals verschl?sseln. Vllt sogar mit verschiedenen Funktionen.
Aber man sollte auch daran denken, dass man f?r gew?hnlich keine extrem geheimen und wichtigen Daten hat und es somit auch nicht so relevant ist, diese zu sch?tzen! -
Es gibt ein Javascript, mit dem kann man das Kennwort vor dem ?bertragen md5-verschl?sseln (128 Bit wenn ich mich nicht irre.)
die Passw?rter clientseitig mit md5 verschl?sseln, halte ich f?r ne nicht so gute idee. Wenn die datenbank ma nicht ganz sicher ist, kann sich jeder depp mitn bills html kenntnissen einloggen. Wenn dann w?re doch RSA cool...aber dasd?rfte zu aufwendig sein...und au?erdem patentgesch?tzt(?)
EDIT:
soll man die sessionid besser per cookie oder pet http-get ?bertragen?
Beitrag ge?ndert am 7.07.2005 03:32 von disod -
Es gibt ein Javascript, mit dem kann man das Kennwort vor dem ?bertragen md5-verschl?sseln (128 Bit wenn ich mich nicht irre.)
die Passw?rter clientseitig mit md5 verschl?sseln, halte ich f?r ne nicht so gute idee. Wenn die datenbank ma nicht ganz sicher ist, kann sich jeder depp mitn bills html kenntnissen einloggen. Wenn dann w?re doch RSA cool...aber dasd?rfte zu aufwendig sein...und au?erdem patentgesch?tzt(?)
EDIT:
soll man die sessionid besser per cookie oder pet http-get ?bertragen?
Beitrag ge?ndert am 7.07.2005 03:32 von disod
wieso willst du eine session id ?ber http-get verbeiten?
die gefunktionen w?rde ich nur bei formularen benutze und dann auch eherpost
mit den session w?rde cih da dann schone her cookies verwenden aber wiesobleibst du nicht bei sessions?
MfG
KRaeusi -
Huch, wo fange ich jetzt zuerst an? Mal der Reihe nach:
@lord(oflima)
Danke f?r den Tipp. Dass sowas mit JavaScript m?glich ist, war mir bisher nicht bewusst. Sch?ines Ding!
@lucas9991
Danke, dass du den Link dazu gepostet hast.
@alle beide
Einen Nachteil hat die Methode mit JS: Sicherheitsbewusste Menschen schalten das normalerweise ab. Und so jemanden davon zu ?berzeugen, JavaScript zur Erh?hung der Sicherheit beim ?bertragen von Passw?rtern wieder einzuschalten, d?rfte schwer werden.
@mastermoul
$hash = crypt($passwort_im_klartext);
http://de.php.net/manual/de/function.crypt.php
In Verbindung mit dem MD5-JavaScript ist vielleicht md5() besser geeignet:
http://de.php.net/manual/de/function.md5.php
Das geht normalerweise so vor sich:
1.) Benutzername und Passwort wandern zum Server (vom Formular aus).
2. Der Server pr?ft in seiner Benutzernamen-Passwort-Liste (aus Datenbank oder Datei), ob der Benutzername vorhanden ist. Wenn nicht: Fehlermeldung!
3. Ist der Benutzer vorhanden, wird das ?bermittelte (Klartext-)Passwort mit crypt() verschl?sselt.
4. Das verschl?sselte Passwort wird mit dem ebenfalls schon verschl?sselt vorliegendem Wert in der Liste verglichen. Sind beide verschl?sselten Werte gleich, ist das Passwort richtig.
Bei der oft verwendeten Methode, im Klartext vorliegende Passw?rter zu vergleichen, besteht das Risiko, dass die Passw?rter in der Liste ausgesp?ht werden k?nnen. Bei verschl?sselten Passw?rtern ist das schwierig (aber leider nicht unm?glich).
@disod
die Passw?rter clientseitig mit md5 verschl?sseln, halte ich f?r ne nicht so gute idee. Wenn die datenbank ma nicht ganz sicher ist, kann sich jeder depp mitn bills html kenntnissen einloggen.
HTTPS (SSL) funktioniert auch so und ist sehr sicher. Gerade die Verschl?sselung des Passwortes (und auch des Benutzernamens) schon auf dem Client ist sehr sicher. Eben weil dann in der Datenbank nur noch verschl?sselte Werte stehen, ist das Knacken schwieriger, als wenn dort alles im Klartext lesbar steht. Das man eine Textdatei mit sensiblen Daten (wenn man sowas zum Speichern der Liste einer Datenbank vorzieht) nicht im WWW-Root speichert, ist eigentlich klar.
Wenn dann w?re doch RSA cool...aber dasd?rfte zu aufwendig sein...und au?erdem patentgesch?tzt(?)
Soweit ich wei?, ist RSA veraltet, und daher ist es nicht mehr empfehlenswert es anzuwenden.
MfG
alopex
P.S. @lordoflima:
Na toll gro?er Meister -- jetzt kann wieder jeder sehen, wann ich meine Tipp-, Schlechtreib- und Schusselfehler ausgeb?gelt habe ...
Beitrag ge?ndert am 7.07.2005 12:26 von alopex -
wieso willst du eine session id ?ber http-get verbeiten?
die gefunktionen w?rde ich nur bei formularen benutze und dann auch eherpost
mit den session w?rde cih da dann schone her cookies verwenden aber wiesobleibst du nicht bei sessions?
MfG
KRaeusi
die Session-ID muss ja jedesmal neu ?bertragen werden, damit der Server wei?, dass sich ein berechtigter user am anderen ende befindet...n ip is mir da zu wenig, da es ja heutzutage tusende router und proxys gibt
...und manche leute haben cookies abgeschaltet
mfg disod
-
alopex schrieb:
Soweit ich wei?, ist RSA veraltet, und daher ist es nicht mehr empfehlenswert es anzuwenden.
RSA veraltet und nicht empfehlenswert...? Wahrscheinlich verwechselst du das mit DES, was wirklich veraltet ist (zumindest in der urspr?nglichen 64-Bit Version). RSA ist sicher und empfehlenswert (RSA liegt beispielsweise der Software PGP zugrunde), allerdings ist es ein asymetrisches Verschl?sselungsverfahren und daher f?r die in diesem Thread ben?tigten Aufgaben viel zu umst?ndlich. Man sollte hier nur auf symetrische Verfahren (z.B. AES (Rinjndael) oder Blowfish o.?.) oder Hashverfahren (MD5 oder besser SHS (SHA-1, SHA-128, SHA-256 oder SHA-512) u.?.) zur?ckgreifen. -
k?nntest du mir n paar adressen geben, wo ich mehr ?ber diese algorithmen erfahren kann(optimal w?ren programm-beispiele)
disod
-
[...]
die Passw?rter clientseitig mit md5 verschl?sseln, halte ich f?r ne nicht so gute idee. Wenn die datenbank ma nicht ganz sicher ist, kann sich jeder depp mitn bills html kenntnissen einloggen. Wenn dann w?re doch RSA cool...aber dasd?rfte zu aufwendig sein...und au?erdem patentgesch?tzt(?)
Wie soll man mit HTML Kenntnissen die Passw?rter knacken?
Dir ist klar, das die md5 Verschl?sselung "eigentlich"(, da man sie auch knacken kann,) eine Einweg Verschl?sselung ist.
EDIT:
soll man die sessionid besser per cookie oder pet http-get ?bertragen?
Beitrag ge?ndert am 7.07.2005 03:32 von disod
Kommt drauf an!
Ich w?rde Cookies vorziehen, da es einfacher ist, da die URL dann nicht zu lang wird und beim kopieren der URL nicht gleich die Session ID mit kopiert wird.
Aber im Endeffekt ist es doch egal, denn man kann beides sniffen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage