PHP doet query niet uitvoeren
logincheck.php
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
55
56
57
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
55
56
57
<?php
echo"test<br>";
include('./dbase.php');
// Zet $_POST-varriabel om naar $varriabel
$user = $_POST['username'];
$pass = $_POST['password'];
$key = $_POST['key'];
// Doe request naar dbase
echo "<br><br>We send this to the Dbase<br><br>";
echo "Username : ".$user."<br>";
echo "Password : ".$pass."<br>";
echo "Key : ".$key."<br>";
$sql = "SELECT * FROM AdminUsers WHERE Username='".$user."' AND Passwd='".$pass."' AND LoginKey='".$key."'";
$result = mysqli_query($connect, $sql);
$logindetails = mysqli_fetch_all($result, MYSQLI_ASSOC);
// show mysql details
echo "<br>Dbase string : ".$sql."<br><br>";
// end
foreach($logindetails as $detail) {
echo "This we got from DBase<br>";
echo "Username : ".$detail['Username']."<br>";
echo "Password : ".$detail['Passwd']."<br>";
echo "LoginKey : ".$detail['LoginKey']."<br>";
echo "Name : ".$detail['Name']."<br>";
}
// compare the values
if(!$details['Username'] == $user) {
echo "<br>Username OK<br>";
} else {
echo "Username not OK<br>";
}
if(!$details['Passwd'] == $pass) {
echo "Password OK<br>";
} else {
echo "Password not OK<br>";
}
if(!$details['LoginKey'] == $key) {
echo "Key OK<br>";
} else {
echo "Key not OK<br>";
}
// If everything is OK
echo "<br>Nu gaan we een sessie aanmaken<br>";
session_start();
$_SESSION['Name'] = $detail['Name'];
$_SESSION['Username'] = $detail['Username'];
$_SESSION['Passwd'] = $detail['Passwd'];
print_r($_SESSION);
header("Location: ../index.php");
?>
echo"test<br>";
include('./dbase.php');
// Zet $_POST-varriabel om naar $varriabel
$user = $_POST['username'];
$pass = $_POST['password'];
$key = $_POST['key'];
// Doe request naar dbase
echo "<br><br>We send this to the Dbase<br><br>";
echo "Username : ".$user."<br>";
echo "Password : ".$pass."<br>";
echo "Key : ".$key."<br>";
$sql = "SELECT * FROM AdminUsers WHERE Username='".$user."' AND Passwd='".$pass."' AND LoginKey='".$key."'";
$result = mysqli_query($connect, $sql);
$logindetails = mysqli_fetch_all($result, MYSQLI_ASSOC);
// show mysql details
echo "<br>Dbase string : ".$sql."<br><br>";
// end
foreach($logindetails as $detail) {
echo "This we got from DBase<br>";
echo "Username : ".$detail['Username']."<br>";
echo "Password : ".$detail['Passwd']."<br>";
echo "LoginKey : ".$detail['LoginKey']."<br>";
echo "Name : ".$detail['Name']."<br>";
}
// compare the values
if(!$details['Username'] == $user) {
echo "<br>Username OK<br>";
} else {
echo "Username not OK<br>";
}
if(!$details['Passwd'] == $pass) {
echo "Password OK<br>";
} else {
echo "Password not OK<br>";
}
if(!$details['LoginKey'] == $key) {
echo "Key OK<br>";
} else {
echo "Key not OK<br>";
}
// If everything is OK
echo "<br>Nu gaan we een sessie aanmaken<br>";
session_start();
$_SESSION['Name'] = $detail['Name'];
$_SESSION['Username'] = $detail['Username'];
$_SESSION['Passwd'] = $detail['Passwd'];
print_r($_SESSION);
header("Location: ../index.php");
?>
- Er mist beveiliging tegen SQL-injection. Dus pas mysqli_real_escape_string toe. Nu kan Jan en Alleman je query manipuleren met kwade gevolgen, maar ook zelf kan je de query saboteren. Vul maar eens een apostrof ' in.
- Je wachtwoorden staan open en bloot. Dit wil je niet, never, nooit! Zorg ervoor dat je ze opslaat met password_hash en controleert met password_verify
- Maak niemand wijzer dan ze al zijn, nu verklap je of iemands username goed is. handig voor de inbreker die dan verder kan gaan.
- Je kan een session_start() nooit gebruiken na output van je script. Zet deze altijd bovenaan het script.
- Wat is het nut om een wachtwoord in een sessie op te slaan? Het enige wat je moet opslaan is de status of iemand ingelogd is: $_SESSION['LoggedIn'] wat dan true of false is.
Het is dat ik wel de site verder kan afwerken.
Wel moet ik alvast zeggen, bedankt voor je hulp.
Die info die jij mij gaf, was zeer behulpzaam en ik gebruik je idee.
Stap voor stap
Genoeg mogelijkheden te bedenken.
Veel succes!
Is een zakelijke website, maar toch bedankt voor de goede info.
Bedankt en ik zal zeker jullie hulp nog eens nodig hebben
Iemand die 5 mislukte inlogpogingen doet zou je dan bijv. voor 5 minuten kunnen blokkeren voor een verdere inlog.
En als je gevorderd bent, dan kan je zelf bijvoorbeeld 2 Factor Authenticatie inbouwen zodat iedereen die inlogt nog even met bijv. Google Authenticator op zijn mobieltje een code opvraagt die wordt overgetypt na het inloggen.
Veiligheid voor alles.
Gewijzigd op 01/06/2022 21:47:48 door - Ariën -