Ik heb hier en daar wat over secure logins gelezen en heb begrepen dat het erg verstandig is usernames en passwords zowieso te encrypten. Dit kan blijkbaar d.m.v. md5 en sha1 encryptie. Is het echter ook mogelijk om deze beiden toe te passen? Dus op deze manier bijvoorbeeld:
$password = md5($_POST['password'];
$password = sha1($password);
Het project moet een soort van board gaan worden - vrij uitgebreid dus. Stel dat ik de gebruikers op deze manier laat inloggen, is dit dan veilig genoeg? (dit is nog slechts een beginnetje):
<?php
//login.php
if ((!isset($_POST['username'])) || (!isset($_POST['password']))) {
echo "
<form action=\"login.php\" method=\"post\">
<input type=\"textfield\" maxlength=15 name=\"username\" /><br />
<input type=\"textfield\" maxlength=15 name="password" /><br />
<input type=\"submit\" name=\"submit\" /> <input type=\"checkbox\" value=1 name=\"cookie\" />
</form>
";
}
elseif ((isset($_POST['username'])) && (isset($_POST['password'])) $$ isset($_POST['submit'])) {
function mksecure($var) {
$var = htmlentities($var);
$var = mysql_real_escape_string($var);
$var = strip_slashes($var);
$var = strip_tags($var);
$var = md5($var);
return $var;
}
$username = @mksecure($_POST['username']);
$password = @mksecure($_POST['password']);
$cookie = @htmlentities($_POST['cookie']);
// Database connectie maken
include "dblink.php";
$query = "SELECT * FROM users WHERE (username='$username') AND (password='$password') LIMIT 1";
$result = @mysql_query($query) or die("<br />Fout bij inloggen<br />");
$match = @mysql_num_rows($result);
$get = @mysql_fetch_array($result);
if (($match == 1) && ($username == $get['username']) && ($password == $get['password'])) {
@setcookie ("username", $username), $time+3200);
@setcookie ("password", $password), $time+3200);
$httpreferer = $_SERVER['HTTP_REFERER'];
$time = date(h:i:s);
$date = date(d-m-Y);
$ip = @getenv("REMOTE_ADDR");
$query2 = "UPDATE users SET ((lastlogintime='$time') AND (lastlogindate='$lastlogindate') AND (referer='$httpreferer') AND (ip='$ip') WHERE ((username='$username') AND (password='$password'))";
header("Location: index.php");
}
else {
echo "U kon niet worden ingelogd.";
}
mysql_close();
}
?>
Het script is zo nog erg incompleet maar ik vraag me af hoe ik het goed af kan maken nadat het script heeft herkend dat de username en password overeenkomen, en, is dit een goed begin?
Kan iemand mij daarnaast uitleggen wat de functies en de voordelen van sessies zijn bij een inlogscript? Dat heb ik nooit goed begrepen...
Alvast bedankt!