Ik wou graag hulp bij het controleren van mijn script. Zelf kon ik geen fouten/exploits vinden, misschien jullie wel? :)
index
<body class="hold-transition login-page">
<div style="margin-top: 40px;" class="login-box">
<div class="login-logo">
<a href="/"><b><?=$_CONFIG['bedrijfsnaam']?></b></a>
</div>
<div class="login-box-body">
<p class="login-box-msg">Login om je sessie te starten</p>
<?php if (!empty($_SESSION['loginfout'])) { echo '<i><p style="color: red; text-align: center; margin-top: -15px;">'.$_SESSION['loginfout'].'</p></i>'; } ?>
<?php if (!empty($_SESSION['loginblock'])) { echo '<i><p style="color: red; text-align: center; margin-top: -15px;">'.$_SESSION['loginblock'].'</p></i>'; unset($_SESSION['loginblock']); } ?>
<?php if (!empty($_SESSION['loginsucces'])) { echo '<i><p style="color: green; text-align: center; margin-top: -15px;">'.$_SESSION['loginsucces'].'</p></i>'; unset($_SESSION['loginsucces']); } ?>
<form action="paneel/assets/include/login.php" method="post">
<div class="form-group has-feedback">
<?php
if (!empty($_SESSION['loginfout'])) {
if (!empty($_SESSION['postgebruikersnaam'])) {
$plaats = "value='".$_SESSION['postgebruikersnaam']."'";
unset($_SESSION['postgebruikersnaam']);
unset($_SESSION['loginfout']);
} else {
$plaats = 'placeholder="Gebruikersnaam"';
unset($_SESSION['loginfout']);
}
} else {
$plaats = 'placeholder="Gebruikersnaam"';
}
?>
<input type="text" name="gebruikersnaam" maxlength="50" class="form-control" <?=$plaats;?> autofocus>
<span class="glyphicon glyphicon-user form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<input type="password" id="pwd" name="wachtwoord" maxlength="50" class="form-control" placeholder="Wachtwoord">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="row">
<div class="col-xs-8">
<div class="checkbox icheck">
<label id="eye" onclick="showHide()">
<div class="icheckbox_square-blue" aria-checked="false" aria-disabled="false" style="position: relative;">
<input type="checkbox" style="position: absolute; top: -20%; left: -20%; display: block; width: 140%; height: 140%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;">
<ins class="iCheck-helper" style="position: absolute; top: -20%; left: -20%; display: block; width: 140%; height: 140%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;">
</ins>
</div> Laat wachtwoord zien
</label>
<script>
function show() {
var p = document.getElementById('pwd');
p.setAttribute('type', 'text');
}
function hide() {
var p = document.getElementById('pwd');
p.setAttribute('type', 'password');
}
var pwShown = 0;
document.getElementById("eye").addEventListener("click", function () {
if (pwShown == 0) {
pwShown = 1;
show();
} else {
pwShown = 0;
hide();
}
}, false);
</script>
</div>
</div>
<div class="col-xs-4">
<button style="padding-left: 5px;" name="inloggen" type="submit" class="btn btn-primary btn-block btn-flat">Inloggen</button>
</div>
</div>
</form>
<div class="social-auth-links text-center">
<p>- OF -</p>
<a href="/registreer" class="btn btn-block btn-social btn-facebook btn-flat"> Maak een nieuw account aan!</a>
<a href="/wachtwoord_vergeten" class="btn btn-block btn-social btn-google btn-flat"> Ik ben mijn wachtwoord vergeten!</a>
</div>
</div>
<p style="text-align: center; margin-top: 10px; font-size: 13pt;">Copyright © <?=date('Y');?> <b><?=$_CONFIG['bedrijfsnaam']?></b></p>
<p style="text-align: center; margin-top: -5px;"><i>Alle rechten voorbehouden aan de rechtmatige eigenaar.</i></p>
</div>
<script src="/paneel/assets/plugins/jQuery/jquery-2.2.3.min.js"></script>
<script src="/paneel/assets/bootstrap/js/bootstrap.min.js"></script>
<script src="/paneel/assets/plugins/iCheck/icheck.min.js"></script>
<script>
$(function () {
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%'
});
});
</script>
</body>
login script
<?php
session_start(); // START UNIEKE SESSIE \\
// IMPORTEER DE BENODIGE CODE \\
include $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/init.php';
include $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/functions.php';
// KIJK OF DE BEZOEKER IS INGELOGD \\
if (ingelogd() == true) {
header('Location: /paneel/dashboard');
exit();
}
$datum = strtotime('UTC'); // KRIJG DE TIJD EN DATUM \\
$eind_datum = strtotime('UTC +600seconds'); // KRIJG DE TIJD EN DATUM + 10 MINUTEN \\
$prefix = $mysqli->real_escape_string($_CONFIG['prefix']); // DEFINITEER DE TABEL PREFIX \\
// CONTROLEER OF JE MEERDERE FOUTE LOGIN POGINGEN HEBT (NA 3 KEER IN 10 MIN. = BLOCK VOOR 10 MIN. OFTEWEL: BRUTEFROCE PROTECTION)\\
$table = $prefix.'foute_pogingen';
$result = $mysqli->query("SELECT * FROM `$table` WHERE `ipadres`='$ipadres'");
if(FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 101).';
header('Location: /');
exit();
} else {
$rows = $result->num_rows;
if ($rows >= 3) {
$result = $mysqli->query("SELECT * FROM `$table` WHERE `ipadres`='$ipadres' ORDER BY id DESC LIMIT 1");
if (FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 102).';
header('Location: /');
exit();
} else {
$row = $result->fetch_assoc();
if ($row['datum'] <= $row['eind_datum']) {
$table = $prefix.'logs';
$result = $mysqli->query("INSERT INTO `$table` (`gebruikersnaam/ipadres`, `log_nummer`, `log_bericht`, `datum`) VALUES ('$ipadres', '1', 'Het ip $ipadres heeft meerdere keren met pogingen gedaan om in te loggen binnen 10 minuten.', '$datum')");
if (FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 103).';
header('Location: /');
exit();
} else {
$row['eind_datum'] = gmdate('H:i', $row['eind_datum']);
$_SESSION['loginfout'] = 'U heeft teveel login pogingen achter elkaar.<br>U moet tot '.$row['eind_datum'].' wachen.';
header('Location: /');
exit();
}
} else {
$table = $prefix.'foute_pogingen';
$result = $mysqli->query("DELETE FROM `$table` WHERE `ipadres`='$ipadres'");
if (FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 103).';
header('Location: /');
exit();
}
}
}
}
}
// LOGIN SCRIPT \\
if (isset($_POST['inloggen'])) {
$gebruikersnaam = $mysqli->real_escape_string($_POST['gebruikersnaam']);
$gebruikersnaam = htmlspecialchars($gebruikersnaam, ENT_QUOTES);
$_SESSION['postgebruikersnaam'] = $gebruikersnaam;
$gebruikersnaam = strtolower($gebruikersnaam);
$wachtwoord = $_POST['wachtwoord'];
if (empty($gebruikersnaam) || empty($wachtwoord)) {
$tabel = $prefix.'foute_pogingen';
$result = $mysqli->query("INSERT INTO `$tabel` (`ipadres`, `datum`, `eind_datum`) VALUES('$ipadres', '$datum', '$eind_datum')");
if (FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 104).';
header('Location: /');
exit();
} else {
$_SESSION['loginfout'] = 'U heeft niet alle velden ingevuld.';
header('Location: /');
exit();
}
} else {
$tabel = $prefix.'leden';
$result = $mysqli->query("SELECT * FROM `$tabel` WHERE `gebruikersnaam`='$gebruikersnaam'");
if (FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 105).';
header('Location: /');
exit();
}
$row = $result->fetch_assoc();
if ($gebruikersnaam == strtolower($row['gebruikersnaam'])) {
if (password_verify($wachtwoord, $row['wachtwoord'])) {
$result = $mysqli->query("UPDATE `$tabel` SET `status`='1' WHERE `gebruikersnaam`='$gebruikersnaam'");
if (FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 106).';
header('Location: /');
exit();
} else {
$_SESSION['loginsuccesnl'] = 'U bent met succes ingelogd.';
$_SESSION['id'] = $row['id'];
header('Location: /paneel/dashboard');
exit();
}
} else {
$tabel = $prefix.'foute_pogingen';
$result = $mysqli->query("INSERT INTO `$tabel` (`ipadres`, `datum`, `eind_datum`) VALUES('$ipadres', '$datum', '$eind_datum')");
if (FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 107).';
header('Location: /');
exit();
} else {
$_SESSION['loginfout'] = 'U heeft foute login gegevens ingevoerd.';
header('Location: /');
exit();
}
}
} else {
$tabel = $prefix.'foute_pogingen';
$result = $mysqli->query("INSERT INTO `$tabel` (`ipadres`, `datum`, `eind_datum`) VALUES('$ipadres', '$datum', '$eind_datum')");
if(FALSE === $result) {
$_SESSION['loginfout'] = 'Er is een fout opgetreden (Error: 108).';
header('Location: /');
exit();
}
$_SESSION['loginfout'] = 'U heeft foute login gegevens ingevoerd.';
header('Location: /');
exit();
}
}
} else {
$_SESSION['loginfout'] = 'U kunt deze pagina niet bezoeken.';
header('Location: /');
exit();
}
?>
[size=xsmall]Toevoeging op 05/01/2017 00:59:12:[/size]
EDIT:
// Voor de login succesvol tekst te laten zien \\
header('Refresh: 3; url=/paneel/dashboard');
// IPV \\
header('Location: /paneel/dashboard');