Beveiliging van login script en aanmeldings script.
Quote:
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
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
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
include_once 'connect.php'; // Connectie met database.
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle voor de invulling.
{
$controle = true;
}
else
{
$controle = false;
}
// functie defineren.
function login($gebruikersnaam, $password, $controle = true)
{
if($controle)
{
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam IS = '".$gebruikersnaam."'");
while($row = mysql_fetch_array($sql))
{
if(($row['password']) == md5($gebruikersnaam))
{
echo 'U bent ingelogd'; // YEEH! pers. is ingelogd.
}
else
{
header('Refresh: 2; url=index.php');
echo 'De ingevoerde gegevens waren niet correct, probeer het opnieuw.';
}
}
}
else
{
echo 'U heeft een van de gegevens niet goed ingevuld.'; // Negatieve melding van ingevoerde gegevens.
}
}
login(($_POST['gebruikersnaam']), ($_POST['password']), $controle);
}
else
{
header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
echo 'U bent op de verkeerde pagina gekomen, u wordt doorverwezen.';
}
?>
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
include_once 'connect.php'; // Connectie met database.
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle voor de invulling.
{
$controle = true;
}
else
{
$controle = false;
}
// functie defineren.
function login($gebruikersnaam, $password, $controle = true)
{
if($controle)
{
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam IS = '".$gebruikersnaam."'");
while($row = mysql_fetch_array($sql))
{
if(($row['password']) == md5($gebruikersnaam))
{
echo 'U bent ingelogd'; // YEEH! pers. is ingelogd.
}
else
{
header('Refresh: 2; url=index.php');
echo 'De ingevoerde gegevens waren niet correct, probeer het opnieuw.';
}
}
}
else
{
echo 'U heeft een van de gegevens niet goed ingevuld.'; // Negatieve melding van ingevoerde gegevens.
}
}
login(($_POST['gebruikersnaam']), ($_POST['password']), $controle);
}
else
{
header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
echo 'U bent op de verkeerde pagina gekomen, u wordt doorverwezen.';
}
?>
Toevoeging op 20/01/2011 00:34:11:
Maar buiten dat wat vinden jullie hiervan?
PRUT of gaat wel na wat verbetering?
Gewijzigd op 20/01/2011 11:53:54 door Ocirina Ocirina
Je script is lek => sql-injection.
Waarom in de query niet ook gelijk het password vergelijken? Scheelt code. Ook ontbreekt de foutafhandeling voor de query. Als je foutafhandeling had, dan had je gezien dat 'IS =' een fout geeft.
is dit niet sql injectie gevoelig?
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
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
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
include_once 'connect.php'; // Connectie met database.
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle voor de invulling.
{
$controle = true;
}
else
{
$controle = false;
}
if($controle)
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string($_POST['password']);
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam IS '".$gebruikersnaam."'");
while($row = mysql_fetch_array($sql))
{
if(($row['password']) == md5($password))
{
echo 'U bent ingelogd'; // YEEH! pers. is ingelogd.
}
else
{
header('Refresh: 2; url=login.php');
echo 'De ingevoerde gegevens waren niet correct, probeer het opnieuw.';
}
}
}
else
{
echo '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.
echo 'U bent op de verkeerde pagina gekomen, u wordt doorverwezen.';
}
?>
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
include_once 'connect.php'; // Connectie met database.
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle voor de invulling.
{
$controle = true;
}
else
{
$controle = false;
}
if($controle)
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string($_POST['password']);
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam IS '".$gebruikersnaam."'");
while($row = mysql_fetch_array($sql))
{
if(($row['password']) == md5($password))
{
echo 'U bent ingelogd'; // YEEH! pers. is ingelogd.
}
else
{
header('Refresh: 2; url=login.php');
echo 'De ingevoerde gegevens waren niet correct, probeer het opnieuw.';
}
}
}
else
{
echo '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.
echo 'U bent op de verkeerde pagina gekomen, u wordt doorverwezen.';
}
?>
Gewijzigd op 20/01/2011 11:01:13 door Ocirina Ocirina
Je kunt ook $password = md5($_POST['password'] doen.
In de query kun je dan WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'" doen.
"Je kunt ook de controle doen binnen die if en else waar je nu die var $controle zet."
Welke controle? dit begrijp ik niet helemaal.
Ik heb hem aangepast maar wat moet ik nu doen? Soort van sessie starten, daar heb ik nog geen ervaring mee.
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
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
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
include_once 'connect.php'; // Connectie met database.
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle voor de invulling.
{
$controle = true;
}
else
{
$controle = false;
}
if($controle)
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
// WAT MOER HIER???
}
else
{
echo '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.
echo 'U bent op de verkeerde pagina gekomen, u wordt doorverwezen.';
}
?>
if( $_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is gedrukt.
{
include_once 'connect.php'; // Connectie met database.
if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle voor de invulling.
{
$controle = true;
}
else
{
$controle = false;
}
if($controle)
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
// WAT MOER HIER???
}
else
{
echo '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.
echo 'U bent op de verkeerde pagina gekomen, u wordt doorverwezen.';
}
?>
Toevoeging op 20/01/2011 11:52:29:
Heel luxe forum hier...
Maar omdat me andere topic is gesloten. Voeg ik dit script toe, graag jullie mening en op of aanmerkingen.
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
58
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
58
<?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'])) // Controle op invulling.
{
if(($_POST['password']) == ($_POST['passwordc']))
{
$controle = true;
}
else
{
$controle = false;
}
}
else
{
$controle = false;
}
if($controle)
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
if($sql != NULL)
{
$sql = mysql_query("INSERT INTO gebruikers VALUES ". $gebruikersnaam . ", " . $password . "'");
header('Refresh: 2; url=login.php');
echo 'U bent succesvol aangemeld, u kunt nu inloggen.';
}
else
{
header('Refresh: 3; url=registreren.php');
echo 'U bent niet aangemeld, probeer het opnieuw met een ander wachtwoord of gebruikersnaam.';
}
}
else
{
echo 'De ingevoerde gegevens kloppen niet, niet alles is ingevuld of u heeft het controle wachtwoord verkeerd ingevuld.';
}
}
else
{
header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
echo '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'])) // Controle op invulling.
{
if(($_POST['password']) == ($_POST['passwordc']))
{
$controle = true;
}
else
{
$controle = false;
}
}
else
{
$controle = false;
}
if($controle)
{
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = mysql_real_escape_string(md5 ($_POST['password']));
$sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
if($sql != NULL)
{
$sql = mysql_query("INSERT INTO gebruikers VALUES ". $gebruikersnaam . ", " . $password . "'");
header('Refresh: 2; url=login.php');
echo 'U bent succesvol aangemeld, u kunt nu inloggen.';
}
else
{
header('Refresh: 3; url=registreren.php');
echo 'U bent niet aangemeld, probeer het opnieuw met een ander wachtwoord of gebruikersnaam.';
}
}
else
{
echo 'De ingevoerde gegevens kloppen niet, niet alles is ingevuld of u heeft het controle wachtwoord verkeerd ingevuld.';
}
}
else
{
header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
echo 'U bent op de verkeerde pagina gekomen, U wordt doorverwezen.';
}
?>
Toevoeging op 20/01/2011 11:57:22:
Leuk beleid, open een paar keer een nieuw topic meteen een waarschuwing.
Wat kinderachtig, ook nog een verkeerd topic vermengen.
Quote:
Beste Ocirina,
Meermaals posten van dezelfde code heeft geen zin. Probeer je probleem in 1 topic op te lossen.
Registratie beter beveiligen?
error op line 21....
Is dit een duidelijk php script?
Dit is een officiële waarschuwing.
Met vriendelijke groeten,
Het PHPHulp-team.
Meermaals posten van dezelfde code heeft geen zin. Probeer je probleem in 1 topic op te lossen.
Registratie beter beveiligen?
error op line 21....
Is dit een duidelijk php script?
Dit is een officiële waarschuwing.
Met vriendelijke groeten,
Het PHPHulp-team.
Gewijzigd op 20/01/2011 11:58:07 door Ocirina Ocirina
md5 levert geen sql gevaarlijke tekens op.
Zie de return types van mysql_query voor check.
Is dit een registratie of een login script?
Je hebt zo te zien wel drie keer hetzelfde topic geopend. Kan ook allemaal in één.
HTTP Redirects uitzetten en je bent binnen.
Altijd exit; na een redirect!!!!!!!!!!!!
Ik snap niet waarom niemand dit eerder heeft gezegd...
Gewijzigd op 20/01/2011 12:22:02 door Pim -
Maar idd, je moet een exit doen of iets dergelijks na een header('Location....');
Pim - op 20/01/2011 12:21:51:
HTTP Redirects uitzetten en je bent binnen.
Altijd exit; na een redirect!!!!!!!!!!!!
Altijd exit; na een redirect!!!!!!!!!!!!
Kun je dan nog iets doen na een redirect eigenlijk? Je bent dan toch van de pagina af?
Pim - op 20/01/2011 12:21:51:
Vrij komische beveiliging.
HTTP Redirects uitzetten en je bent binnen.
Altijd exit; na een redirect!!!!!!!!!!!!
Ik snap niet waarom niemand dit eerder heeft gezegd...
HTTP Redirects uitzetten en je bent binnen.
Altijd exit; na een redirect!!!!!!!!!!!!
Ik snap niet waarom niemand dit eerder heeft gezegd...
Zou je misschien even willen aangeven hoe precies? Ik heb geen zin om dat hele script te doorlopen, aangezien die logica toch nog steeds niet correct is.
Ozzie PHP op 20/01/2011 12:26:04:
Kun je dan nog iets doen na een redirect eigenlijk? Je bent dan toch van de pagina af?
Pim - op 20/01/2011 12:21:51:
HTTP Redirects uitzetten en je bent binnen.
Altijd exit; na een redirect!!!!!!!!!!!!
Altijd exit; na een redirect!!!!!!!!!!!!
Kun je dan nog iets doen na een redirect eigenlijk? Je bent dan toch van de pagina af?
Nee, de browser krijgt een header aangeleverd dat hij op een andere pagina moet kijken. De output stopt niet.
Edit: De SQL rammelt ook.
@karl waarom rammelt de SQL?
In ieder geval bedankt voor jullie reacties, en inderdaad ik moet in één topic overgaan.
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
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
<?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 = mysql_real_escape_string(md5 ($_POST['password']));
$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 . ", " . ($_POST['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 = mysql_real_escape_string(md5 ($_POST['password']));
$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 . ", " . ($_POST['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.');
}
?>
Gewijzigd op 20/01/2011 14:06:07 door Ocirina Ocirina
Karl Karl op 20/01/2011 12:31:07:
[Nee, de browser krijgt een header aangeleverd dat hij op een andere pagina moet kijken. De output stopt niet.
Dit kan ik even niet volgen. Dus als je met location of redirect een andere pagina aanroept en je hebt na de headers nog code of output staan, dan wordt dat gewoon uitgevoerd??
Maar hoe doe je dan een volledige redirect in je code? Of gaat dat gewoon altijd via een header en een exit / die?
Ozzie PHP op 20/01/2011 14:01:28:
Dit kan ik even niet volgen. Dus als je met location of redirect een andere pagina aanroept en je hebt na de headers nog code of output staan, dan wordt dat gewoon uitgevoerd??
Karl Karl op 20/01/2011 12:31:07:
[Nee, de browser krijgt een header aangeleverd dat hij op een andere pagina moet kijken. De output stopt niet.
Dit kan ik even niet volgen. Dus als je met location of redirect een andere pagina aanroept en je hebt na de headers nog code of output staan, dan wordt dat gewoon uitgevoerd??
jeps..
header();
mysql_query();
mysql query wordt hier gewoon uitgevoerd..
Ozzie PHP op 20/01/2011 15:09:45:
Maar hoe doe je dan een volledige redirect in je code? Of gaat dat gewoon altijd via een header en een exit / die?
That's it sir! En als je dat vaker doet, maak je er "natuurlijk" een methode/functie van :)
Zo 1-2-3 zag ik niet een probleem in dit script... Maar ik kijk dan ook gewoon vlot.
Het is verstandig om altijd een exit na een redirect / location / whatever te doen.
Oke, thanks... altijd goed om te weten!
Gewijzigd op 20/01/2011 16:19:55 door Ocirina Ocirina