Beveiliging van login script en aanmeldings script.
Ocirina of Time op 20/01/2011 16:11:34:
Maar zoals ik hem nu als laatst heb gepost bevat hij verder geen problemen? Of beveiligings fouten?
Je hebt het over je post van 20/01/2011 14:00:23 ?
* Laat dit achterwege:
$password = mysql_real_escape_string(md5 ($_POST['password']));
Dit volstaat
$password = md5 ($_POST['password']);
md5 geeft een string terug die ongevaarlijk is voor injectie.
* $_POST['mail'] gebruik je wel nog 1 keer zonder bescherming, in de INSERT.
Ook dit escapen.
Gewijzigd op 20/01/2011 16:37:20 door Kris Peeters
@kris, bedankt voor je reactie. Ik heb het aangepast zie het script:
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
include_once 'connect.php';
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail']))
{
if(($_POST['password']) == ($_POST['passwordc']))
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = md5 ($_POST['password']);
$mail = mysql_real_escape_string($_POST['mail']);
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
if($sql != NULL)
{
mysql_query("INSERT INTO gebruikers VALUES ". $gebruikersnaam . ", " . $password . ", " . $mail . "");
header('Refresh: 2; url=login.php');
exit ('U bent succesvol aangemeld, u kunt nu inloggen.');
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('U bent niet aangemeld, probeer het opnieuw met een ander wachtwoord of gebruikersnaam.');
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');
}
}
else
{
header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, U wordt doorverwezen.');
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
include_once 'connect.php';
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail']))
{
if(($_POST['password']) == ($_POST['passwordc']))
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = md5 ($_POST['password']);
$mail = mysql_real_escape_string($_POST['mail']);
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
if($sql != NULL)
{
mysql_query("INSERT INTO gebruikers VALUES ". $gebruikersnaam . ", " . $password . ", " . $mail . "");
header('Refresh: 2; url=login.php');
exit ('U bent succesvol aangemeld, u kunt nu inloggen.');
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('U bent niet aangemeld, probeer het opnieuw met een ander wachtwoord of gebruikersnaam.');
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');
}
}
else
{
header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, U wordt doorverwezen.');
}
?>
Ik zie ook nog dat je de ' vergeet rond de strings in je insert string.
Tegen injection ben je verder wel beschermd, nu.
Tegen injection ben je verder wel beschermd, nu.
Waarom een simpele beveiliging zoals MD5, makkelijk voor een bruter bij kleine wachtwoorden, waarom niet gewoon een functie opmaken zodat je voor alles gelijk een systeem beveiliging oplossing hebt. dat is toch wel het handigste vind je niet?
Je kunt trouwens ook een cookie gebruiken of een simpele ticket zodat als je niet op schoolserver zit, gelijk bent ingelogd. of probeer een session te maken met een ticket of inlog tijd.
Je kunt trouwens ook een cookie gebruiken of een simpele ticket zodat als je niet op schoolserver zit, gelijk bent ingelogd. of probeer een session te maken met een ticket of inlog tijd.
Ik krijg een error:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\loginv.php on line 13
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\loginv.php:13) in C:\xampp\htdocs\loginv.php on line 20
Verkeerde gebruikersnaam of wachtwoord.
De code:
Toevoeging op 20/01/2011 17:24:50:
@karl,
ik ga even uitzoeken hoe die salt werkt en het proberen in te voegen.
Bedankt allemaal nog voor jullie reacties.
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\loginv.php on line 13
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\loginv.php:13) in C:\xampp\htdocs\loginv.php on line 20
Verkeerde gebruikersnaam of wachtwoord.
De code:
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
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
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']))
{
include_once 'connect.php'; // Connectie met database.
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = ("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
$uitvoer = mysql_query($sql);
$controle = mysql_num_rows($uitvoer);
if($controle != 0)
{
echo 'U bent ingelogd';
}
else
{
header('Refresh: 2; url=login.php');
exit ('Verkeerde gebruikersnaam of wachtwoord.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php');
exit ('U heeft een van de gegevens niet goed ingevuld.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}
?>
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']))
{
include_once 'connect.php'; // Connectie met database.
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = ("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
$uitvoer = mysql_query($sql);
$controle = mysql_num_rows($uitvoer);
if($controle != 0)
{
echo 'U bent ingelogd';
}
else
{
header('Refresh: 2; url=login.php');
exit ('Verkeerde gebruikersnaam of wachtwoord.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php');
exit ('U heeft een van de gegevens niet goed ingevuld.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}
?>
Toevoeging op 20/01/2011 17:24:50:
@karl,
ik ga even uitzoeken hoe die salt werkt en het proberen in te voegen.
Bedankt allemaal nog voor jullie reacties.
Er is iets fout met de syntax van je sql string.
Daarom geeft mysql_query een false terug naar $uitvoer in plaats van een recource.
SELECT gebruikersnaam, password FROM ...
komma ipv. AND
Daarom geeft mysql_query een false terug naar $uitvoer in plaats van een recource.
SELECT gebruikersnaam, password FROM ...
komma ipv. AND
Ik heb een mooie salt functie gevonden, kan ik dit gewoon met include_once gebruiken?
Toevoeging op 20/01/2011 17:37:39:
Dankje v.d. reactie. Ik heb het aangepast, ik ga nu even werken maar hij werkt nog steeds niet. Nog steeds dezelfde error, on line 13. Warning: mysql_num_rows() expects parameter 1 to be resource
De code:
Toevoeging op 20/01/2011 17:37:39:
Kris Peeters op 20/01/2011 17:31:19:
Er is iets fout met de syntax van je sql string.
Daarom geeft mysql_query een false terug naar $uitvoer in plaats van een recource.
SELECT gebruikersnaam, password FROM ...
komma ipv. AND
Daarom geeft mysql_query een false terug naar $uitvoer in plaats van een recource.
SELECT gebruikersnaam, password FROM ...
komma ipv. AND
Dankje v.d. reactie. Ik heb het aangepast, ik ga nu even werken maar hij werkt nog steeds niet. Nog steeds dezelfde error, on line 13. Warning: mysql_num_rows() expects parameter 1 to be resource
De code:
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
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
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']))
{
include_once 'connect.php'; // Connectie met database.
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = ("SELECT gebruikersnaam, password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND password='" . $password . "'");
$uitvoer = mysql_query($sql);
$controle = mysql_num_rows($uitvoer);
if($controle != 0)
{
echo 'U bent ingelogd';
}
else
{
header('Refresh: 2; url=login.php');
exit ('Verkeerde gebruikersnaam of wachtwoord.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php');
exit ('U heeft een van de gegevens niet goed ingevuld.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}
?>
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']))
{
include_once 'connect.php'; // Connectie met database.
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = ("SELECT gebruikersnaam, password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND password='" . $password . "'");
$uitvoer = mysql_query($sql);
$controle = mysql_num_rows($uitvoer);
if($controle != 0)
{
echo 'U bent ingelogd';
}
else
{
header('Refresh: 2; url=login.php');
exit ('Verkeerde gebruikersnaam of wachtwoord.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php');
exit ('U heeft een van de gegevens niet goed ingevuld.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}
?>
Gewijzigd op 20/01/2011 17:41:31 door Ocirina Ocirina
Hoe moeilijk is het om mysql_query te lezen en te begrijpen?
Niet moeilijk, maar wat gaat daar dan fout?
@KARL bedankt! Ik moest even goed op mijn muil gaan, maar ik heb het gevonden:
ipv. password gebruikte ik wachtwoord! Erg bedankt.
@KARL bedankt! Ik moest even goed op mijn muil gaan, maar ik heb het gevonden:
ipv. password gebruikte ik wachtwoord! Erg bedankt.
Gewijzigd op 20/01/2011 17:41:01 door Ocirina Ocirina
Dat je moet lezen hoe je die moet gebruiken en wat je terug krijgt. Dus hoe je kan controleren of het goed gaat.
Er staan zelfs voorbeelden.
Er staan zelfs voorbeelden.
@karl,
Vind je het een bende dit script?
Toevoeging op 20/01/2011 21:40:20:
Wat vinden jullie er nu van?
Vind je het een bende dit script?
Toevoeging op 20/01/2011 21:40:20:
Wat vinden jullie er nu van?
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
include_once 'connect.php';
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail']))
{
if(($_POST['password']) == ($_POST['passwordc']))
{
include_once 'uwx3g.php'; // Connectie met salt page.
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = md5(salt($_POST['password']));
$mail = mysql_real_escape_string($_POST['mail']);
$datum = date("Y.m.d");
$sql = ("SELECT gebruikersnaam FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "'");
$uitvoer = mysql_query($sql);
$controle = mysql_num_rows($uitvoer);
if($controle == 0)
{
mysql_query("INSERT INTO gebruikers (id, gebruikersnaam, password, mail, datum) VALUES ('','" . $gebruikersnaam . "', '" . $password . "', '" . $mail . "', '" . $datum . "')");
header('Refresh: 4; url=login.php');
exit ('U bent succesvol aangemeld, u kunt nu inloggen.');
}
else
{
header('Refresh: 2; url=registreren.php');
exit ('Verkeerde gebruikersnaam of wachtwoord.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');
}
}
else
{
header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, U wordt doorverwezen.');
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
include_once 'connect.php';
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail']))
{
if(($_POST['password']) == ($_POST['passwordc']))
{
include_once 'uwx3g.php'; // Connectie met salt page.
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = md5(salt($_POST['password']));
$mail = mysql_real_escape_string($_POST['mail']);
$datum = date("Y.m.d");
$sql = ("SELECT gebruikersnaam FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "'");
$uitvoer = mysql_query($sql);
$controle = mysql_num_rows($uitvoer);
if($controle == 0)
{
mysql_query("INSERT INTO gebruikers (id, gebruikersnaam, password, mail, datum) VALUES ('','" . $gebruikersnaam . "', '" . $password . "', '" . $mail . "', '" . $datum . "')");
header('Refresh: 4; url=login.php');
exit ('U bent succesvol aangemeld, u kunt nu inloggen.');
}
else
{
header('Refresh: 2; url=registreren.php');
exit ('Verkeerde gebruikersnaam of wachtwoord.'); // Negatieve melding van ingevoerde gegevens.
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');
}
}
else
{
header('Refresh: 3; url=registreren.php');
exit ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');
}
}
else
{
header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
exit ('U bent op de verkeerde pagina gekomen, U wordt doorverwezen.');
}
?>




