Sponsor-Board.de

Normale Version: [Hilfe] PHP Brute Force Schutz durch IP Sperre
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
HeyHo!

Ich arbeite gerade an einem eigenen CMS! Aber das soll vorläufig eher privat bleiben und nicht für andere zugänglich sein. Ich habe alles fertig was ich wollte bis auf einen Bruteforce Schutz. Es gibt jetzt 2 Möglichkeiten. Entweder, ich nehme ein Captcha was sicherlich wirksam ist, oder ich nutze ein IP Bann Script. Also nach 10 Login Versuchen z.B. wird die IP in eine Datenbank eingetragen und wenn dann der 11. Login Versuch kommt, möchte ich das er auf eine andere Seite umgeleitet wird. Z.B.: die 404.php! Nun, leider habe ich keine Ahnung wie ich das machen soll :/ Habt ihr halbe Scripte oder verschiedene Tutorials damit ich mir das erarbeiten kann? Ich hab einiges zu dem Thema gefunden aber nie was gefunden was ich nutzen kann.

mfg
Maurice
Wie wäre es wenn du einfach eine Variable hochzählen lässt wenn das Password falsch eingeben wurde und wenn die Variable dann denn Wert x erreicht hat lässt du die Ip Adresse in eine DB eintragen und wenn die IP dort schon drin steht dann soll er das weitere Interagieren verbieten mit deiner 404.php Seite.
Schwieriges Thema.
IP nutzen kann man, ist aber nutzlos weil man die faken kann.
Theoretisch kannst du einen Clienten nicht wiedererkennen wenn er weiß was er tut.Da hast du keinen Einfluss drauf.
Normal macht man es so, dass man den Account sperrt und per aktivierungslink wieder aktivieren kann.
Eine Sichere aber manchmal nervtötende Variante.
Ansonsten gäbe es noch FlashCookies oder du nutzt alle möglichen Infos wie z.B. Auflösung, Browserinformationen...
Der IP-Bann ist keine gute Idee, wenn Leute auf einer LAN sind haben sie nach außen die selbe IP, sprich alle werden gebannt.

Im Grunde ist es doch einfach: User-Accounts werden bei dir auch in der Datenbank gespeichert, oder? Dann fügst du zwei Felder hinzu: attempts (int) und suspended_at (timestamp). Immer wenn ein Login fehlschlägt für den User (d.h. Email/Username korrekt, Passwort falsch) erhöhst du attempts (Versuche) um 1. Ist attempts >= einem bestimmten Wert, z. B. 3, dann setzt du es auf 0 zurück aber dafür suspended_at auf die aktuelle Zeit. Beim Login wird dann außerdem geprüft, ob ein User in den letzten Minuten (z. B. 15) suspended wurde und wenn ja, darf er sich nicht einloggen. (Bei einem erfolgreichen Login wird attempts immer auf 0 zurückgesetzt.)

Scharock schrieb:
Schwieriges Thema.
IP nutzen kann man, ist aber nutzlos weil man die faken kann.
Theoretisch kannst du einen Clienten nicht wiedererkennen wenn er weiß was er tut.Da hast du keinen Einfluss drauf.
Normal macht man es so, dass man den Account sperrt und per aktivierungslink wieder aktivieren kann.
Eine Sichere aber manchmal nervtötende Variante.
Ansonsten gäbe es noch FlashCookies oder du nutzt alle möglichen Infos wie z.B. Auflösung, Browserinformationen...


Flash Cookies würde ich wieder nicht nehmen. Mansche Plugins, Addons und Browser akzeptieren keine Cookies und nur Sessions. Und es gibt ja nur einen Account und das ist meiner! Und der soll garantiert nicht gesperrt werden xD

simon_s schrieb:
Der IP-Bann ist keine gute Idee, wenn Leute auf einer LAN sind haben sie nach außen die selbe IP, sprich alle werden gebannt.

Im Grunde ist es doch einfach: User-Accounts werden bei dir auch in der Datenbank gespeichert, oder? Dann fügst du zwei Felder hinzu: attempts (int) und suspended_at (timestamp). Immer wenn ein Login fehlschlägt für den User (d.h. Email/Username korrekt, Passwort falsch) erhöhst du attempts (Versuche) um 1. Ist attempts >= einem bestimmten Wert, z. B. 3, dann setzt du es auf 0 zurück aber dafür suspended_at auf die aktuelle Zeit. Beim Login wird dann außerdem geprüft, ob ein User in den letzten Minuten (z. B. 15) suspended wurde und wenn ja, darf er sich nicht einloggen.


Und es gibt ja nur einen Account und das ist meiner! Und der soll garantiert nicht gesperrt werden xD Und selbst wenn, da es nur einen Account gibt (meiner), kann es mir ja egal sein wenn für außerhalb iein LAN gebannt ist. Sie würden ja versuchen sich auf meinen Account einzuloggen! Hättest du was anderes? Wenn nein danke trz.

Wenn du eine sichere Veschüsselung hast, bringt auch kein Bruteforce Wink
Und wenn dann gibts auch sowas wie htaccess Schutz!

Gruß Sysix

Sysix schrieb:
Wenn du eine sichere Veschüsselung hast, bringt auch kein Bruteforce Wink
Und wenn dann gibts auch sowas wie htaccess Schutz!

Gruß Sysix

Wenn es nur um deinen Account geht, ist das an sich sogar ziemlich einfach.
1. Den Login nicht auf die Startseite und auch nicht unter [Link: Registrierung erforderlich] machen
[Link: Registrierung erforderlich]
da kommt niemand hin Smile

Andere Alternative eine Whitelist oder wie Sysix schreibt eine sichere Verschlüsselung benutzen bcryt auf 5 Sekunden und fertig.
Wenns dir sehr wichtig ist, setz ihn auf 10 Sekunden und nimm ein sicheres Passwort.
Dann ist es unknackbar.

Am besten [Link: Registrierung erforderlich]
und ein 5 Sekunden bcryt.
Immer merken: md5, Sha... sind nicht für PW Verschlüsselungen gemacht Wink

Das ist schon richtig, dass SHA nicht für Passwärter gemacht ist, einen praktischen Grund gegen SHA-3 gibts trotzdem net...
Bei einigen meiner Passwörter komm ich auch über 55 Bytes - da kann ich bcrypt gar nicht nutzen.
Zusätzlich kann ich persönlich dir noch raten zu integrieren, das man wenn man das Passwort 3 Mal falsch eingegeben hat, z.B. 30 Sekunden bis zur nächsten Passworteingabe, nach 6 mal 60 Sekunden etc. warten muss. Allerdings gibts hier das Problem das es vom Benutzer leicht umgangen werden kann wenn du die IP Adresse oder Cookies nutzt, deshalb solltest du dich nicht allein auf diese Methode verlassen. Das in der Kombination mit alledem hier genannten wäre sicher schon sehr wirksam gegen so einige Brutforces, doch bedenke eins: Ein Hacker wird nicht zuerst versuchen dein Script mittels Brutforce anzugreifen, weil das ist zeitaufwändig und sicher nicht sehr elegant also wenn dein Script nicht schon sicher genug ist würde ich dir empfehlen zuerst da anzusetzen.

Scharock schrieb:
Schwieriges Thema.
IP nutzen kann man, ist aber nutzlos weil man die faken kann.
Theoretisch kannst du einen Clienten nicht wiedererkennen wenn er weiß was er tut.Da hast du keinen Einfluss drauf.
Normal macht man es so, dass man den Account sperrt und per aktivierungslink wieder aktivieren kann.
Eine Sichere aber manchmal nervtötende Variante.
Ansonsten gäbe es noch FlashCookies oder du nutzt alle möglichen Infos wie z.B. Auflösung, Browserinformationen...

Bullshit, implementiere ruhig eine IP Sperre, ist besser als nichts. Die IP zu ändern (per Proxy oder Reconnect) dauert verhältnismäßig lange, daher lohnt sich Bruteforce dann nicht mehr.

Sysix schrieb:
Wenn du eine sichere Veschüsselung hast, bringt auch kein Bruteforce Wink
Und wenn dann gibts auch sowas wie htaccess Schutz!

WombatWeb schrieb:
Das ist schon richtig, dass SHA nicht für Passwärter gemacht ist, einen praktischen Grund gegen SHA-3 gibts trotzdem net...
Bei einigen meiner Passwörter komm ich auch über 55 Bytes - da kann ich bcrypt gar nicht nutzen.

Wieder Bullshit und Bullshit, mit Bruteforce bekommt man jedes Passwort raus, Voraussetzung ist nur unendlich viel Zeit.
Verschlüsselung bringt da überhaupt nichts.
MD5, SHA und wie sie alle heißen haben keinerlei Effekt auf die Sicherheit des Logins. Es ist nur eine weitere Sicherheitsvorkehrung falls es jemandem gelungen ist an die Datenbank zu kommen, sodass die Passwörter nicht im Klartext dort stehen.

Achte lieber auf MySQL Injections, etc., das kommt in der Praxis viel häufiger vor.
Oder lass die ganze Sache direkt sein, wenn man solche Fragen stellt, ist man nicht in der Lage ein CMS zu schreiben.

Seiten: 1 2 3
Referenz-URLs