PatrickStel
Gebruiker
- Lid geworden
- 20 mei 2015
- Berichten
- 39
Goedemorgen,
Ik ben bezig met een e-learning maar ik zit nu echter vast.
Kunnen jullie mij tips & advies geven? gelieve niet de oplossing zodat ik er zelf wat van leer
Het script bestaat uit 3 functies en een switch case, ik moest authenticatie inbouwen dat is me al wel geluk.
Het probleem wat nu bestaat is http://www.ditisdeurl/index.php?cmd=view&vault=2 die parameter bij vault is natuurlijk heel makkelijk te veranderen naar 1 of 3 en omdat je de inlog voorbij bent word daar niks meer gecheckt.
Alvast bedankt,
Patrick
Ik ben bezig met een e-learning maar ik zit nu echter vast.
Kunnen jullie mij tips & advies geven? gelieve niet de oplossing zodat ik er zelf wat van leer
Het script bestaat uit 3 functies en een switch case, ik moest authenticatie inbouwen dat is me al wel geluk.
Het probleem wat nu bestaat is http://www.ditisdeurl/index.php?cmd=view&vault=2 die parameter bij vault is natuurlijk heel makkelijk te veranderen naar 1 of 3 en omdat je de inlog voorbij bent word daar niks meer gecheckt.
PHP:
<?
/*
* Deze applicatie is de basis van een zeer eenvoudige online kluis. Vul
* de applicatie aan door authenticatie en autorisatie toe te voegen.
*
* De database met een gebruiker 'gert' en wachtwoord
* 'hetregenteenkleinbeetje' staat al voor je klaar. Je hoeft dus geen
* database commando's te schrijven.
*
* Let op: in de database staat het wachtwoord gehashed, gestretched en
* en gesalt met behulp van de PBKDF2 functie met de volgende instellingen:
* SHA2 voor hashing, 10.000 iteraties en een uitvoerlengte van 40 tekens.
* De hash staat in de kolom "hash" en de salt in de kolom "salt".
*/
/*
* gegeven een gebruikersnaam en wachtwoord, controleer of deze kloppen
* en geef het user-id van de gebruiker terug
*/
function login($username, $password) {
$result = read_password_salt($username, $password);
if (!$result) {
return false;
}
$database_hash = $result['hash'];
$database_salt = $result['salt'];
// controleer of het wachtwoord klopt
$check_hash = hash_pbkdf2("sha256", $password, $database_salt, 10000, 40);
if ($check_hash == $database_hash){
return $result['id'];
}
}
/*
* gegeven een user-id, geef de inhoud van deze vault weer
*/
function view($userid) {
$sql = new mysqli("localhost", "vault", "vault", "vault_nl2");
$stmt = $sql->prepare("SELECT contents FROM vaults WHERE user_id = ?");
$stmt->bind_param("i", $userid);
if (!$stmt->execute() || !$stmt->store_result()|| !$stmt->num_rows) {
return;
}
$stmt->bind_result($contents);
$stmt->fetch();
return $contents;
}
/*
* gegeven een username, lees het password en de salt voor deze
* gebruiker uit de database
*/
function read_password_salt($username, $password) {
$sql = new mysqli("localhost", "vault", "vault", "vault_nl2");
$stmt = $sql->prepare("SELECT id, hash, salt FROM users WHERE " .
"username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($id, $hash, $salt);
if($stmt->fetch() !== TRUE) {
return FALSE;
}
$check_hash = hash_pbkdf2("sha256", $password, $salt, 10000, 40);
if ($check_hash !== $hash){
return FALSE;
}
return [ "id" => $id, "hash" => $hash, "salt" => $salt ];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
</head>
<body>
<?
if (isset($_REQUEST['cmd'])) {
$cmd = $_REQUEST['cmd'];
} else {
$cmd = "";
}
switch($cmd) {
case "login":
if (!isset($_POST['username']) || !isset($_POST['password'])) {
exit;
}
$userid = login($_POST['username'], $_POST['password']);
if (isset($userid)) {
?>
<p>Klik <a href="index.php?cmd=view&vault=<?=intval($userid)?>">hier</a>
om je kluis te bekijken</p>
<?
exit;
} else {
print("Login mislukt");
}
break;
case "view":
if (!isset($_GET['vault'])) {
exit;
}
#if ($userid == $_GET['vault']) {
echo $_GET['vault'];
print "Kluis inhoud: " . htmlspecialchars(view($_GET['vault']));
break;
#}
default:
?>
<form method="POST" action="index.php">
<input type="hidden" name="cmd" value="login"/>
<p>Username: <input type="text" name="username"/></p>
<p>Wachtwoord: <input type="password" name="password"/></p>
<p><input type="submit"/></p>
</form>
<?
}
?>
Alvast bedankt,
Patrick