php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.01.2012, 17:22  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Weil beim GET die SessionID per URL übergeben wird und sich somit in der Historie des Browsers und/oder im Cache eines Proxys wiederfinden kann und es somit ein einfaches ist, sich eine SID zu besorgen.
Nicht nur das. Das eigentlich Problem ist Session Fixation.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.01.2012, 18:27  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OK, hier mal beispielhaft das Konzept anhand der Registrierung:

Beim Aufruf der Seite wird ein Token generiert und gehasht.
Die relevanten Feldnamen sind an das Token gekoppelt und werden ebenfalls gehasht.
Ist das Token abgelaufen, wird ein neues Token generiert und die alten relevanten Feldnamen sind obsolet.
Für Spam Bots gibt es per CSS ausgeblendete Feldnamen mit Standardnamen, welche auf jeden Fall leer bleiben müssen.
Wenn irgendeiner dieser Standard Feldmanen mit Werten füllt und fas Formular absendet, geht es für den Betreffenden sofort in eine Blacklist und wird für 30 Minuten gesperrt.
Die Sicherheitsabfrage ist eine Zufällige Zahlenfolge mit einer Zufälligen Länge, welche bei jedem Aufruf neu generiert wird.
Ist die max. Anzahl der Registrierungsversuche erreicht, geht es in die Blacklist und der Betreffende wird auch wieder für 30 Minuten gesperrt.
Desweiteren gibt es einen Tick-Count der einen Request/Seconds nachhält. Wird ein gewisser Schwellenwert überschritten, geht es wieder in eine Blacklist (noch nicht implementiert) und wird anschließend irgendwohin geleitet.
Die Werte der relevanten Feldnamen werden jeweils ihrer Bestimmung mit einem dafür zugehörigen preg_match auf jeweils gültige Zeichen validiert.
Wenn irgendwas nicht stimmt, gibt es entsprechende Fehlermeldungen.
Ist ansonsten alles OK und das Token noch nicht abgelaufen, wird ein neuer Benutzer in der Datenbank angelegt und erhält eine E-Mail zwecks Bestattung der E-Mail-Adresse (noch nicht implementiert, damit man mit irgendwelchen Adressen zum Testen hantieren kann).

Config- und Krypto-Dateien liegen außerhalb von htdocs.

Soweit der Plan.

Jetzt könnt ihr es auseinandernehmen ^^ ... bin für alles offen.

Danke & Gruß
Frank
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...
Neo68X ist offline   Mit Zitat antworten
Alt 10.01.2012, 19:14  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
wird auch wieder für 30 Minuten gesperrt
Zitat:
Desweiteren gibt es einen Tick-Count der einen Request/Seconds nachhält. Wird ein gewisser Schwellenwert überschritten
Alleine diese beiden Punkte kannst Du nicht sicherstellen, weil es keine verlässliche Usererkennung gibt (außer eben Cookie/Session-ID-Parameter). Allenfalls kannst Du eine IP sperren, aber das alle Angriffe von einer IP kommen, ist halt nicht gegeben.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 10.01.2012, 19:23  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du hast recht ... es gibt "leider keine" eineindeutige Client-Erkennung ohne Cookie/SessionID.

Deswegen: Der Sperreintrag basiert auf einen hash aus REMOTE_ADDR und HTTP_USER_AGENT. Zuerst wird der hash überprüft, um anschließend dann nur die IP zu prüfen. taucht die IP innerhalb einer Zeitspanne von 1,5 Stunden 3 mal auf, wird die IP für 12h Stunden gesperrt und wird solange diese weitere Prüfung auf nur IP als Sperreintrag in der DB vorhanden ist, sofort von der Site irgendwohin weggeheadert.
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...
Neo68X ist offline   Mit Zitat antworten
Alt 10.01.2012, 19:34  
hts
Erfahrener Benutzer
 
Registriert seit: 07.09.2010
Beiträge: 722
PHP-Kenntnisse:
Fortgeschritten
hts befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von tr0y Beitrag anzeigen
Mein Weil sollte ihm entlocken ob er wirklich weiß wieso, denn das ganze Ausführen der Art- und Weise wie übertragen wurde wirkt ( zumindest auf mich ) so ca. wie "habsch gegoogled aber net verstanden".
Ja klar, das passt auch zu den restlichen Aussagen deines Posts ("Die Übergabe der SessionID ist ersteinmal Unerheblich" usw.).

Meine Fresse, so was aalglattes. Am besten wir lassen uns alle die Taschen zunähen
hts ist offline   Mit Zitat antworten
Alt 10.01.2012, 19:45  
Neuer Benutzer
 
Registriert seit: 07.11.2011
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
PHPBenutzer befindet sich auf einem aufstrebenden Ast
Standard

@Neo68X

Wieso lässt du nicht einfach das Benutzer Konto sperren statt zu versuchen denn Hacker
irgendwie ausser Gefecht zu setzen?

Sieht dann in etwa so aus:

- 5 mal Password Falsch bei einem Benutzer -> Konto wird gesperrt.
- E-mail mit Freischalt code wird an die registrierte Adresse gesendet.
- User klickt den Code an Fehlversuche werden wieder auf 0 gesetzt.

Ist halt nur ein Vorschlag damit du vielleicht, noch zu anderen Ideen angeregt wirst und das ganze aus einer anderen Perspektive betrachtest.

Gruss
PHPBenutzer
PHPBenutzer ist offline   Mit Zitat antworten
Alt 11.01.2012, 17:41  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 19
PHP-Kenntnisse:
Anfänger
Neo68X ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von PHPBenutzer Beitrag anzeigen
@Neo68X

Wieso lässt du nicht einfach das Benutzer Konto sperren statt zu versuchen denn Hacker
irgendwie ausser Gefecht zu setzen?

Sieht dann in etwa so aus:

- 5 mal Password Falsch bei einem Benutzer -> Konto wird gesperrt.
- E-mail mit Freischalt code wird an die registrierte Adresse gesendet.
- User klickt den Code an Fehlversuche werden wieder auf 0 gesetzt.

Ist halt nur ein Vorschlag damit du vielleicht, noch zu anderen Ideen angeregt wirst und das ganze aus einer anderen Perspektive betrachtest.

Gruss
PHPBenutzer
... schöne Idee. Werde ich wohl auch so übernehmen.

Aber wenn jemand versucht mit einem nicht vorhandenen Benutzerkonto da irgendwie rumzukaspern, habe ich ja nur die Möglichkeit eine Kombi aus REMOTE_ADDR + HTTP_USER_AGENT zu hashen und dann zu sperren.

Ich überlege derzeit auch noch, ob ich clients mit einem leeren oder nicht gesetzten HTTP_USER_AGENT Header komplett den Zugriff zu verweigern - mit entsprechenden Hinweis wenn dies zutrifft. Ich beziehe mich da auf den "fingerprint"-Hinweis des PHP Security Guide, nur in etwas abgewandelter Form.

Gruß
Frank
__________________
Wenn man weiß wie es geht, ist es auf einmal sau einfach ...
Neo68X ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Login System Clara PHP Einsteiger 6 29.07.2011 18:54
Facebook Login und eigener Login Paralell blackcrow PHP-Fortgeschrittene 17 29.05.2011 21:03
[Erledigt] PHP Login System Nokes PHP Tipps 2010 8 16.10.2010 14:15
Script Login system mit Registrierung+aktivierungsmail SkyX PHP Tipps 2010 1 03.02.2010 18:57
[Erledigt] Login System mit Registrierung xstefxanx PHP Tipps 2009 9 31.03.2009 16:33
login system, logout timer superfutzi PHP Tipps 2008 14 28.12.2008 12:30
Mysql LoginScriptzu MySqli LoginScript lithium PHP Tipps 2008 27 17.11.2008 19:48
Login System matii PHP Tipps 2008 6 16.04.2008 11:35
Login System Probleme ! 7Style PHP Tipps 2008 2 07.01.2008 13:55
Problem mit meinem Login System DJ Nuno PHP Tipps 2008 9 16.10.2007 16:44
Sicheres Login System? PHP Tipps 2006 11 14.03.2006 15:05
Login System für die eigene HP? Datenbanken 1 05.10.2005 19:48
Registrierungs und Login Scripte, Beispiele PHP Tipps 2004-2 4 13.12.2004 13:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum