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
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.');
}
?>
Tegen injection ben je verder wel beschermd, nu.
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.
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.
Daarom geeft mysql_query een false terug naar $uitvoer in plaats van een recource.
SELECT gebruikersnaam, password FROM ...
komma ipv. AND
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
mysql_query te lezen en te begrijpen?
Hoe moeilijk is het om @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
Er staan zelfs voorbeelden.
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.');
}
?>