• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Passwortschutz

Sunnyboy

Mitglied
Hallo

Wie kann ich diesen Passwortschutz noch optimieren?
PHP:
<?php
function Passwortschutz ($input, $salt = 'EinwenigTextumdasganzevordemEinsatzvonRainbowTableszusichern')
{
    return hash('sha512', $input . $salt);
}

if (isset($_POST['password'])) {
    if ('PasswortEinwenigTextumdasganzevordemEinsatzvonRainbowTableszusichern' === Passwortschutz($_POST['password'])) {
        echo 'Korrekt!';
    } else {
        echo 'Falsch!';
    }
}  
?>


<?php 
echo '<form action="' . $_SERVER['SCRIPT_NAME'] . '" method="post" name="Form"> 
Passwort: <input type="password" name="password" size="12"> 
<input type="submit" value="ok"></form>'; 
?>
Natürlich steht dann an Stelle von PasswortEinwenigTextumdasganzevordemEinsatzvonRainbowTableszusichern der hash davon...
LG Sunnyboy
 
Also ich hab nen HTM Login gemacht und hab auch ne Frage :
Wie kann ich mehrere Logins machen ?

<head>
<div id="xr_xd0"><div class="xr_tl" style="left: 670px; top: -65px;"><script language='JavaScript' type='text/JavaScript'>
function fifteenth(form) {
if (form.sixteenth.value=='Hier Benutzername einfügen') {
if (form.pass.value=='Hier Passwort einfügen') { location='Hier Link zur Internetseite einfügen' ;}
else {alert('Falsches Passwort')}}
else { alert('Falscher Benutzername')}}
</script>



<title></title>

</head>

<body>


<center>
<table bgcolor='#FFFF00' cellpadding='10' border='1'><tr><td colspan='2'>
<center><h2><i><b>Erik's Internetseite Login"</b></i></h2></center>
</td></tr><tr><td><h2><i><b>Benutzername:</b></i></h2></td><td>
<form name='login'>
<input name='sixteenth' type='text'></td></tr><tr><td><h2><i><b>Passwort:</b></i></h2></td><td>
<input name='pass' type='passwort'></td></tr><tr><td><center>
<input type='button' value='Login' onClick='fifteenth(this.form)'></center></td><td><center>
<input type='Reset'>
</form></td></tr></table>
</center>
</body>
 
Hallo.

@Sunnyboy
Die Prüfung des Passworts ist in deinem Script mehr als ausreichend sicher. Wie die Einbindung der geschützten Inhalte aussieht, ist jedoch eine andere Sache, über die sich aus deinem Code noch nichts sagen lässt.

@schwarzfahrer1994
Deine Passwortüberprüfung basiert auf JavaScript, welches vom Browser und nicht vom Server ausgeführt wird. Der Besucher kann einfach in den Quelltext sehen und das Passwort auslesen.

Gruß
 
hi,
auf diesem wege hab ich doch gleich eine frage ;)
was macht dieses return hash() ??
ich weiß was return ist, aber was macht dieses hash() ??
- ich tippe mal auf verschlüsseln... ^^ aber wie
 
aber was macht dieses hash()
Was eine PHP Funktion erledigt siehst du im PHP: Hypertext Preprocessor Handbuch

Übergeben tust du als ersten Parameter die Hash Art, zB md5 oder sha1, und als zweiten Parameter den String, der gehasht werden soll.


@Sunny: wie oft brauchst Du denn überhaupt einen Login? Einmal? Falls ja, ist die Funktion sinnlos. Funktionen und Klassen dienen der Wiederverwertbarkeit.

Wenn Du die Funktion also nur einmal einsetzten möchtest, schreibs doch einfach so
PHP:
<?php
if (isset($_POST['password'])) 
{
    if ('PasswortEinwenigTextumdasganzevordemEinsatzvonRainbowTableszusichern' === sha512($_POST['password'].'EinwenigTextumdasganzevordemEinsatzvonRainbowTableszusichern')) 
    {
        echo 'Korrekt!';
    } 
    else 
    {
        echo 'Falsch!';
    }
} 
?>
Ich weiß nicht was hinter dem Login geschützt wird, solltest Du aber öfters Dinge verschlüsseln müssen, hat die Funktion natürlich schon einen Sinn - aber auch nur dann wenn du den Funktionsnamen nicht so spezifizierst, zB stringToHash().

 
Ja ich will schon mehrere Seiten schützen. Ich probiere aber vorallem, das ganze zu perfektionieren...
...was ist wohl dann die beste Methode, einen Loginbereich zu machen? (Dass währ dann nämlich der nächste Schritt.)

Merci fürs Helfen
LG Sunnyboy
 
Hallo Sunnyboy,
du könntest den $_POST, sofern er richtig ist, in eine $_SESSION schreiben und bei allen aufgerufenen Aktionen diese Session überprüfen.
Des Weiteren könntest du beim Login z.B. ein Captcha einbauen, um vor Bruteforcern zu schützen. Eine weitere Möglichkeit wäre auch, nach X falschen eingegebenen Passwörtern die IP zu blockieren.
Mit freundlichen Grüßen
 
Hallo Sunnyboy,
du könntest den $_POST, sofern er richtig ist, in eine $_SESSION schreiben und bei allen aufgerufenen Aktionen diese Session überprüfen.
Des Weiteren könntest du beim Login z.B. ein Captcha einbauen, um vor Bruteforcern zu schützen.
Mit freundlichen Grüßen

Was soll das bringen, die $_POST Werte ins $_SESSION zu übertragen?
Captchas sind heutzutage kein großes Problem mehr - die kann man übergehen.
Eine weitere Möglichkeit wäre auch, nach X falschen eingegebenen Passwörtern die IP zu blockieren.
Das ist sicher wirkungsvoller. :-)


Ja ich will schon mehrere Seiten schützen. Ich probiere aber vorallem, das ganze zu perfektionieren...
...was ist wohl dann die beste Methode, einen Loginbereich zu machen? (Dass währ dann nämlich der nächste Schritt.)

Merci fürs Helfen
LG Sunnyboy
Meine Frage war: benötigst Du die Funktion Passwortschutz einmal oder mehrmals?

Das mit dem nächsten Schritt verstehe ich nicht - Du hast doch den Loginbereich bereits fertig. Oder meinst Du den geschützen Bereich?

Auf den geschützten Seiten muss Du immer die Session überprüfen. Auf jede Seite erstmal ein session_start() setzen. In der if else Verzweigung bei deinem Login Script, solltest du, bei richtigem Passwort, dann eben einen Wert im assoziativen Session Array setzen, zB:
PHP:
$_SESSION['user'] = array();
$_SESSION['user']['id'] = 1;
Auf den Seiten prüfst du nun:

PHP:
if (isset($_SESSION['user']['id']) && $_SESSION['user']['id'] > 0)
{
     //User darf die Seite sehen
}
else
{
    //User darf die Seite nicht sehen
}
 
Hallo T!P-TOP

Ich benötige den Passwortschutz einmal, aber für einen ganzen Bereich (mehrere Seiten auf einer Site). Und ich glaube das kann ich z.B mit Sessions oder Cookies erreichen. Ich gehe davon aus, dass es noch etliche weitere Wege gibt.

Aber was ich nicht weis, ist welche der Varianten eine sehr gute ist, um nicht zu sagen die Beste.

Mit freundlichen Grüssen
Sunnyboy
 
Zurück
Oben