kostenloser Webspace werbefrei: lima-city


Hilfe für Loginscript im PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    saveshshonline

    saveshshonline hat kostenlosen Webspace.

    Hallo miteinander

    Nachdem ihr mir gestern mit meinem json Problem helfen konntet habe heute eine etwas generellere Frage. Und zwar auf was geachtet werden muss wenn man ein komplettes Login System in PHP schreiben will.

    Ich habe einige Tutorials gesehen wie man es umsetzten könnte doch in Punkto Sicherheit sind alle unterschiedlich. MIr ist klar das ich ein PW niemals im Klartext in einer DB speichern soll doch welchen hash soll ich nehmen? MD5?

    Bin für jeden Tipp oder Link, eventuell auch aus eigener Erfahrung, dankbar.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi

    Kann dir zwar nicht viel zu deinem Problem sagen aber was ich weiss ist, dass md5 nicht mehr sicher ist und nicht mehr verwendet werden soll.
  4. Autor dieses Themas

    saveshshonline

    saveshshonline hat kostenlosen Webspace.

    Danke doch was wäre dein Tipp wenn man md5 nicht mehr verwenden soll?
  5. matthias-detsch

    Kostenloser Webspace von matthias-detsch

    matthias-detsch hat kostenlosen Webspace.

    sha512 zum Beispiel
    natürlich gesalzen
    Dann solltest du noch darauf achten, dass niemand über das Formular auf deine Datenbank zugreifen kann (mir wurde immer gesagt: Stichwort "Prepared Statements") und dass deine Steite XSS imun ist :D

    *Liste nicht vollständig

    Beitrag zuletzt geändert: 27.3.2016 12:07:29 von matthias-detsch
  6. Autor dieses Themas

    saveshshonline

    saveshshonline hat kostenlosen Webspace.

    Danke

    "Prepared Statements" soll nach meinen Recheren zum verhindern von SQL-Injections genutzt werden.

    Werde mir mal versuchen was zusammen zu bauen. Wer noch mehr Tipps hat gerne her damit. :)
  7. Grundlagen:
    Der Server muss sicher sein. SQL-Injection und XSS müssen dir was sagen. Maskierungen sind oberste Pflicht, bevor man sich weitere Gedanken über Sicherheit macht.

    Bezüglich des Passworts gibt es zwei Dinge zu beachten:

    1. Rainbow-Tables
    Es gibt Tabellen, in denen zu Milliarden von Passwörtern die passenden Hashs gespeichert sind. Man findet einige Cracker-Seiten im Internet, wo man nur noch den Hash eingeben muss und bei einem Treffer wird dann das zugehörige Passwort ausgespuckt. Deshalb ist ein purer Hashwert sehr unsicher. Der Hash sollte deshalb inmer mit einem Salt berechnet werden. (Am besten noch zufällig erzeugt und zusammen mit dem Hash abgespeichert.)

    2. Brute Force
    Wer ein Passwort aus einem Hashwert knacken will, kann Brute Force einsetzen. Ein einzelner Hash ist meist nach Mikrosekunden berechnet. Somit kann man Tausend bis Millionen Passwörter pro Sekunde ausprobieren. Wenn du den Hash-Algorithmus jetzt aufwändiger machst, z.B. indem du 1000 Hashwerte in einer Schleife berechnest, dann verzögert sich der Loginvorgang kaum wahrnehmbar, eine Brute-Force Attacke dauert aber 1000-Mal so lang.

    => Schau dir mal bcrypt an, dort werden diese zwei Punkte beachtet. Oder setze es selbst um. :biggrin:

    Auch in Bezug zur Session sind einige Dinge zu beachten:

    1. Session Hijacking
    Ein Angreifer gelangt an das Sessioncookie eines angemeldeten Nutzers.
    Gegenmaßnahmen: Die Session eine feste Zeit nach dem Login und auch nach einer gewissen Zeit Inaktivität ablaufen lassen.

    2. Session Fixation
    Ein Angreifer schiebt dem Opfer eine bestimmte Session-Id unter. Das Opfer meldet sich an und der Angreifer ist ebenfalls angemeldet.
    Gegenmaßnahmen: Beim Login eine neue Session-Id vergeben.

    3. Cross Site Request Forgery
    Ein Angreifer erstellt eine Angriffsseite, die (z.B. mit Hilfe von Javascript) eine Aktion bei dir im Loginbereich ausführt. Ein Opfer ist bei dir bereits eingeloggt und besucht nun die Angriffsseite. Die Aktion wird nun, meist auch noch unbemerkt, mit den Rechten des Opfers durchgeführt.
    Gegenmaßnahmen: Jedes Formular erhält ein "hidden"-Feld mit einem zufällig generierten Token. Beim Empfang muss geprüft werden, ob das Token gültig ist.

    Zusammenfassung:
    Mach dir Gedanken über die einzelnen Punkte. Nicht alles davon muss umgesetzt werden. Das ist abhängig davon, wie sicher dein System am Ende sein soll / wie viel du programmieren möchtest.
  8. Autor dieses Themas

    saveshshonline

    saveshshonline hat kostenlosen Webspace.

    @fuerderer

    Danke für die vielen Tipps. Werde jetzt erst einmal versuchen ein Grundgerüst aufzubauen und anschliessend immer mehr Sicherheit integrieren.
  9. Hallo,
    seit php 5.5.0 gibt es Funktionen für die Verschlüsselung... vielleicht bringt dich das ja schon etwas näher an die Lösung.
  10. Schau dir die von staymyfriend verlinkte password_hash und password_verify Funktion an. Die kümmert sich um alles was du brauchst - starker Hashalgorithmus und salt werden automatisch verwendet. Du musst lediglich den zurückgegebenen String in der Datenbank speichern (beachte die Hinweise zu dessen Länge!).
    Das hat auch den Vorteil, dass, wenn ein neuer, stärkere Hashalgorithmus vorhanden ist, PHP neue Passwörter mit dem hashen kann, Du musst also nicht manuell den Code anpassen, wenn z.B. bcrypt obsolet wird.

    Beitrag zuletzt geändert: 27.3.2016 14:44:19 von davidlw
  11. Autor dieses Themas

    saveshshonline

    saveshshonline hat kostenlosen Webspace.

    Danke für den Tipp. Das macht es einem ja ziemlich einfach. War am Anfang etwas verrwirt als ich die ganz Salt sache gelesen habe.
  12. uebungen-till

    uebungen-till hat kostenlosen Webspace.

    https://www.php-einfach.de/experte/php-codebeispiele/loginscript/
    Diese Anleitung hat mir geholfen mein erstes Login Skript zu schreiben
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!