Beveiligingslek op inlog systeem
Ik heb een vraagje ik heb een inlog systeem gemaakt. Maar ben er achter gekomen dat ik met een veiligheidslek zit. Als je bovenaan in de url balk de pagina naam invoegt dan kom je alsnog op de pagina kan me iemand wat uitleg over geven AUB.
alvast bedankt
Gewijzigd op 19/07/2018 08:43:07 door - Ariën -
de login pagina:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
session_start();
if( isset($_SESSION['user_id'])){
header("Location: user.php");
}
require 'database.php';
if(!empty($_POST['email']) && !empty($_POST['password'])):
$records = $conn->prepare('SELECT id,email,password FROM users WHERE email = :email');
$records->bindParam(':email', $_POST['email']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
$message='';
if(count($results) > 0 && password_verify($_POST['password'], $results['password'])){
$_SESSION['user_id'] = $results['id'];
header("Location: user.php");
} else {
$message = 'Sorry your input is incorrect';
}
endif;
?>
<!DOCTYPE html>
<html>
<head>
<title>Login page</title>
<link rel="stylesheet" type="text/css" media="screen" href="assets/css/style.css" />
</head>
<body>
<div class="header">
<a href="index.php">app name</a>
</div>
<?php if(!empty($message)): ?>
<p><?= $message ?></p>
<?php endif; ?>
<h1>Login</h1>
<span>or <a href="register.php">register here</a></span>
<form action="login.php" method="POST">
<input type="text" placeholder="Enter your email" name="email">
<input type="password" placeholder="and password" name="password">
<input type="submit">
</form>
</body>
</html>
session_start();
if( isset($_SESSION['user_id'])){
header("Location: user.php");
}
require 'database.php';
if(!empty($_POST['email']) && !empty($_POST['password'])):
$records = $conn->prepare('SELECT id,email,password FROM users WHERE email = :email');
$records->bindParam(':email', $_POST['email']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
$message='';
if(count($results) > 0 && password_verify($_POST['password'], $results['password'])){
$_SESSION['user_id'] = $results['id'];
header("Location: user.php");
} else {
$message = 'Sorry your input is incorrect';
}
endif;
?>
<!DOCTYPE html>
<html>
<head>
<title>Login page</title>
<link rel="stylesheet" type="text/css" media="screen" href="assets/css/style.css" />
</head>
<body>
<div class="header">
<a href="index.php">app name</a>
</div>
<?php if(!empty($message)): ?>
<p><?= $message ?></p>
<?php endif; ?>
<h1>Login</h1>
<span>or <a href="register.php">register here</a></span>
<form action="login.php" method="POST">
<input type="text" placeholder="Enter your email" name="email">
<input type="password" placeholder="and password" name="password">
<input type="submit">
</form>
</body>
</html>
en dan de user page:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ingelogd</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="header">
<a href="index.php">app name</a> | <a href="logout.php"> Logout?</a>
<div id="datum">
<?php $datum = date("j F Y");
echo "Vandaag is het $datum";
?></div>
</div>
<div class="box">
</box>
</body>
</html>
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ingelogd</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="header">
<a href="index.php">app name</a> | <a href="logout.php"> Logout?</a>
<div id="datum">
<?php $datum = date("j F Y");
echo "Vandaag is het $datum";
?></div>
</div>
<div class="box">
</box>
</body>
</html>
Gewijzigd op 19/07/2018 11:33:33 door nicky de maeyer
PS: Gebruik code tags in je bericht, om je code beter leesbaar te maken. Zie ook de Veelgestelde Vragen.
Gewijzigd op 19/07/2018 09:43:22 door - Ariën -
dit is alvast opgelost.
Code (php)
Weer iets bij geleerd :D
header('Location: ...') transporteert je niet direct automagisch naar de nieuwe locatie (interne link).
Zorg dat je de inhoud van de hierboven gelinkte reactie doorgrondt en ik raad je aan om voor redirects een functie te gebruiken zoals in die reactie staat beschreven.
En zoals altijd: Zorg dat je de inhoud van de hierboven gelinkte reactie doorgrondt en ik raad je aan om voor redirects een functie te gebruiken zoals in die reactie staat beschreven.
@thomas van den heuvel bedankt ik ga er nog een beetje met experimenteren en jou uitleg proberen toe te passen ;).