Login sicher machen.
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
datenbank
einloggen
eintrag
ergebnis
erstellen
genannte kombinieren
http
idee
login
sagen
schaden
session
sicherheit
spalte
speichern
unerlaubt zugang
unsinn
url
vergleichen
-
Hallo,
Könnt ihr mir sagen das Login sicher ist
Oder wie man das Login sicher macht.
<?php session_start(); $verhalten = 0; if(isset($_COOKIE["user"])) { $user = $_COOKIE["user"]; setcookie("user", $user, time()+2592000); $_SESSION["username"] = $user; $verhalten = 1; } else { if(!isset($_SESSION["username"]) and !isset($_GET["page"])) { $verhalten = 0; } if($_GET["page"] == "log") { /* $user = $_POST["user"]; $passwort = $_POST["passwort"]; */ $user = strtolower($_POST["user"]); $passwort = md5($_POST["passwort"]); $verbindung = mysql_connect("localhost", "root", "") or die ("Fehler im System"); mysql_select_db("manuel") or die ("Verbidung zur Datenbank war nicht möglich..."); $control = 0; $abfrage = "SELECT * FROM login WHERE user = '$user' AND passwort = '$passwort'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $control++; } if($control != 0) { if(isset($_POST["angemeldet"])) { setcookie("user", $user, time()+2592000); } $_SESSION["username"] = $user; $verhalten = 1; } else { $verhalten = 2; } } } ?> <html> <head> <title>Login</title> <?php if($verhalten == 1) { ?> <meta http-equiv="refresh" content="1; URL=includes/seite2.php" /> <?php } ?> </head> <body> <?php if($verhalten == 0) { ?><font color="#00FF00"> Bitte logge dich ein:</font><br /> <form method="post" action="index.php?page=log"> <p><font color="#00FF00">User:</font> <input type="text" name="user" /><br /> <font color="#00FF00">Passwort:</font> <input type="password" name="passwort" /> <br /><br /> <input type="submit" value="Einloggen" /> </p> <p> <?php } if($verhalten == 1) { ?> Du hast dich richtig eingeloggt und wirst nun weitergeleitet.... <?php } if($verhalten == 2) { ?> Du hast dich nicht richtig eingeloggt, <a href="index.php">zurück</a>. </p> <?php } ?> </form> </body> </html>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mann muss im endeffekt nur ein cookie mit dem namen user erstellen und schon ist man drin.
Sehr unsicher. -
mazegame-online schrieb:
in dem man das rad nicht immer wieder erfindet! (das haben schon die hettiter gehabt [es war schon damals ganz rund!] und das ist eine weile her ;)
Okay Wie macht man da sicher ...
also ich weise ungern auf google hin, weil ich selbst google überhaupt nicht mag, aber trotzdem intensivst verwende ;) dort findest du jede menge anleitungen, hinweise &c. zu der geschichte.
z.b.: (suche nach) google: php login sicher machen - man halte sich fest, es bläst einem 20,700,000 results (0.31 seconds) ins aug' ... braucht man noch mehr? wenn du NUR die ersten besten 1000 ;) durcharbeitest, bist du garantiert in der lage, hier niemandem mehr mit der blödheit (wir hatten im forum schon 1(?)... na! 2x ;) zu belästigen.
es ist eine miese art gulden durch faulheit oder frechheit &c. zu verdienen. wir helfen hier schon gern, aber fronarbeiter sind wir nicht! sorry
==== EDIT ====
aaa yo! genau "dein script" ist schon einmal hier vorgekommen! ja wie denn???? (du kannst nicht lesen? nur faragen? schlimm!)
Beitrag zuletzt geändert: 7.4.2013 2:40:46 von czibere -
Bringe einfach die IP mit ein Speichere die Ip in deiner Datenbank und Prüfe dann ob der user mit der IP sich eingeloggt hat
Dazu erstellst du einfach eine Spalte mit dem namen ip_letzter_login
Du änderst den Wert dann bei jedem Login und so kannst du überprüfen ob der user nur seinen Login vortäuscht oder nicht -
hpage schrieb:
Und welchen Sicherheitsgewinn hat man dadurch ?
Bringe einfach die IP mit ein Speichere die Ip in deiner Datenbank und Prüfe dann ob der user mit der IP sich eingeloggt hat
Dazu erstellst du einfach eine Spalte mit dem namen ip_letzter_login
Du änderst den Wert dann bei jedem Login und so kannst du überprüfen ob der user nur seinen Login vortäuscht oder nicht -
Teile der Session des Benutzer eine eindeutige ID zu, und speichere die in Datenbank und Cookie.
Diese ID sollte bei jedem Login neu generiert werden, und in keinster Weise irgendwie von bestehenden Benutzerdaten abhängig sein. Zudem sollte sie nach einer Dauer X, oder sobald ein fehlerhafter Loginversuch auftrat (Sprich die SessionID aus dem Cookie stimmt nicht mit der aus der Datenbank überein), automatisch verfallen.
Außerdem gilt: Je mehr abzugleichende Daten, desto sicherer, und je länger die Sessionid, desto schwerer ist sie herauszufinden. -
Es ist schon merkwürdig, dass hier um ein schlechtes Script so herumgeeiert wird.
Die Urheberschaft gebührt wohl htmlworld (Videotutorial auf YouTube).
Wer seine Scripte sicherer machen will, der sollte auch immer die aktuellsten Sicherheitsstandards beherzigen.
Z.B. die Funktionen mysql_connect() et al
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used.
Datenbankeinträge und -abfragen sollten mit Prepared Statments erfolgen.
Auf eine Sicherheit der Sessions ist ganz besonders zu achten.
Grundkenntnisse in Session Fixation, Session Hijacking, Session Poisoning, etc. sind ein absolutes Muss.
MFG,
timebandit -
probiere einfach das mal aus.
-
hpage schrieb:
Bringe einfach die IP mit ein Speichere die Ip in deiner Datenbank und Prüfe dann ob der user mit der IP sich eingeloggt hat
Dazu erstellst du einfach eine Spalte mit dem namen ip_letzter_login
Du änderst den Wert dann bei jedem Login und so kannst du überprüfen ob der user nur seinen Login vortäuscht oder nicht
Klar, jeder Durchschnittsuser hat sicher eine statische IP, anhand derer sich ein Sicherheitsgewinn schaffen läßt. Du glaubst jetzt vermutlich, Ironie in meinem Kommentar zu lesen? Richtig, so ist es. -
hpage schrieb:
Bringe einfach die IP mit ein Speichere die Ip in deiner Datenbank und Prüfe dann ob der user mit der IP sich eingeloggt hat
Dazu erstellst du einfach eine Spalte mit dem namen ip_letzter_login
Du änderst den Wert dann bei jedem Login und so kannst du überprüfen ob der user nur seinen Login vortäuscht oder nicht
Also ich find die Idee garnicht so dumm denn der User kann ja keinen Datenbank Eintrag erstellen das geht nur durchs Loginscript aber alleine reicht das nun auch wieder nicht nur alles hier genannte Kombinieren sollte sicher genug sein -
ffs2309 schrieb:
hpage schrieb:
Bringe einfach die IP mit ein Speichere die Ip in deiner Datenbank und Prüfe dann ob der user mit der IP sich eingeloggt hat
Dazu erstellst du einfach eine Spalte mit dem namen ip_letzter_login
Du änderst den Wert dann bei jedem Login und so kannst du überprüfen ob der user nur seinen Login vortäuscht oder nicht
Also ich find die Idee garnicht so dumm denn der User kann ja keinen Datenbank Eintrag erstellen das geht nur durchs Loginscript aber alleine reicht das nun auch wieder nicht nur alles hier genannte Kombinieren sollte sicher genug sein
Das ist Unsinn, IPs zu vergleichen bring rein gar nichts... So ziemlich jeder Anschluss hat ne dynamische IP, zumindest, solange IPv4 noch dort draußen ist.... Ich ändere also meine IP jetzt, das wird verglichen und dann kann ich mich nicht mehr einloggen? o.0 Oder anders herum, ich ändere die IP und kann mich trotzdem einloggen, also bräuchte ich die IP gar nicht erst zu speichern... -
tchab schrieb:
ffs2309 schrieb:
hpage schrieb:
Bringe einfach die IP mit ein Speichere die Ip in deiner Datenbank und Prüfe dann ob der user mit der IP sich eingeloggt hat
Dazu erstellst du einfach eine Spalte mit dem namen ip_letzter_login
Du änderst den Wert dann bei jedem Login und so kannst du überprüfen ob der user nur seinen Login vortäuscht oder nicht
Also ich find die Idee garnicht so dumm denn der User kann ja keinen Datenbank Eintrag erstellen das geht nur durchs Loginscript aber alleine reicht das nun auch wieder nicht nur alles hier genannte Kombinieren sollte sicher genug sein
Das ist Unsinn, IPs zu vergleichen bring rein gar nichts... So ziemlich jeder Anschluss hat ne dynamische IP, zumindest, solange IPv4 noch dort draußen ist.... Ich ändere also meine IP jetzt, das wird verglichen und dann kann ich mich nicht mehr einloggen? o.0 Oder anders herum, ich ändere die IP und kann mich trotzdem einloggen, also bräuchte ich die IP gar nicht erst zu speichern...
Ich sage ja nicht das es Sicherheit gibt ich sage nur es ist nicht dumm die IP mit zu schreiben einmal falls du multiuser verhindern willst und du kannst den der sich unerlaubt Zugang verschafft hat rausfinden durch die IP also anders gesagt : Es kann nicht schaden -
ffs2309 schrieb:
tchab schrieb:
ffs2309 schrieb:
hpage schrieb:
Bringe einfach die IP mit ein Speichere die Ip in deiner Datenbank und Prüfe dann ob der user mit der IP sich eingeloggt hat
Dazu erstellst du einfach eine Spalte mit dem namen ip_letzter_login
Du änderst den Wert dann bei jedem Login und so kannst du überprüfen ob der user nur seinen Login vortäuscht oder nicht
Also ich find die Idee garnicht so dumm denn der User kann ja keinen Datenbank Eintrag erstellen das geht nur durchs Loginscript aber alleine reicht das nun auch wieder nicht nur alles hier genannte Kombinieren sollte sicher genug sein
Das ist Unsinn, IPs zu vergleichen bring rein gar nichts... So ziemlich jeder Anschluss hat ne dynamische IP, zumindest, solange IPv4 noch dort draußen ist.... Ich ändere also meine IP jetzt, das wird verglichen und dann kann ich mich nicht mehr einloggen? o.0 Oder anders herum, ich ändere die IP und kann mich trotzdem einloggen, also bräuchte ich die IP gar nicht erst zu speichern...
Ich sage ja nicht das es Sicherheit gibt ich sage nur es ist nicht dumm die IP mit zu schreiben einmal falls du multiuser verhindern willst und du kannst den der sich unerlaubt Zugang verschafft hat rausfinden durch die IP also anders gesagt : Es kann nicht schaden
In dem Zitat (und dem Thread hier) geht es aber um Sicherheit, du hast ja nicht gesagt, dass es um was anderes geht. ;)
Ich sehe trotzdem keinen Sinn darin, die IP zu loggen. Und Multiaccounts verbieten bringt nur was, wenn man sich damit Vorteile verschaffen kann (zum Beispiel virtuelle Währung senden). Pauschal verbieten ist sinnlos, es kommt auf den Zweck an. -
Es wäre auch nicht schlecht wenn du mit mysql_real_escape_string(); arbeitest, damit sind MYSQL Injections schonmal einwenig eingedämmt. Allerdings würde ich keine Cookies verwenden oder wenns ein Cookie sein soll dieses dann per Hash + Salt verschlüsseln lassen. Sessions sind da viel angenehmer :P
-
http://typo3blogger.de/passwort-sicherheit-erhohen-mit-saltedpasswords/
-
shopeau schrieb:
http://typo3blogger.de/passwort-sicherheit-erhohen-mit-saltedpasswords/
Nichts gegen Salz, ist sicherheitstechnisch immer ein gutes Argument, Den Link und die Hintergründe ein wenig, auch jenseits der Verwendung in Typo3, hier (sic!) genauer zu erklären, wäre die Entlohnung für diesen Beitrag aber sicher wert gewesen.
Beitrag zuletzt geändert: 11.5.2013 3:25:18 von fatfreddy -
Eine gute Variante wäre es wenn du username und password hash mit md5 und dann einen salt einfügst, und dieser salt + username/passwort wird dann im cookieabgespeichert. Dann machst du das noch so das jeder user einen zufälligen salt bekommt und schon ist es etwas besser gesichert. Mit Sessions wäre allerdings auch nicht schlecht.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage