PHP doet query niet uitvoeren
Ik heb het opgelost, wel op een vreemde manier, maar het werkt.
logincheck.php
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");
?>
Werken zal het wel doen, maar er schort nog een hoop aan:
- 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.
- 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.
hey, het ging erom dat het werkt en ja ik ga dat zeker nog aanpassen.
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
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
Je zou eventueel nog kunnen kijken voor brute-force beveiliging, en een mogelijkheid om accounts te bannen/deactiveren.
Genoeg mogelijkheden te bedenken.
Veel succes!
Genoeg mogelijkheden te bedenken.
Veel succes!
Is puur voor CMS panel, niet voor gebruikers, deze kunnen zich niet registreren.
Is een zakelijke website, maar toch bedankt voor de goede info.
Bedankt en ik zal zeker jullie hulp nog eens nodig hebben
Is een zakelijke website, maar toch bedankt voor de goede info.
Bedankt en ik zal zeker jullie hulp nog eens nodig hebben
Ja, maar beiden kunnen zeker dan van belang zijn.
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.
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 -




