Problemen bij beveiligen
als een persoon zich inlogt dan worden de volgende sessies aangemaakt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
session_start();
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['login'] = $login ;
$_SESSION['memberid'] = $memberid;
$_SESSION['gebruikerniveau'] = $gebruikerniveau;
$serial = serialize($_SESSION);
$md5 = md5(md5(md5($serial)));
$_SESSION['hash'] = $md5;
?>
session_start();
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['login'] = $login ;
$_SESSION['memberid'] = $memberid;
$_SESSION['gebruikerniveau'] = $gebruikerniveau;
$serial = serialize($_SESSION);
$md5 = md5(md5(md5($serial)));
$_SESSION['hash'] = $md5;
?>
bij de pagina die ik wil beveiligen heb ik dit gedaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
session_start();
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
session_destroy();
die('Hacking attempt!');
}else{
if(!isset($_SESSION['memberid']) && !isset($_SESSION['gebruikerniveau'])){
echo ("Om deze pagina te kunnen bekijken moet je ingelogd zijn");
}else{
session_start();
$session_data = $_SESSION;
unset($session_data['hash']);
$serial = serialize($session_data);
$md5= md5(md5(md5($serial)));
if ($_SESSION['hash'] != $md5){
session_destroy();
die('Hacking attempt!');
}else{
/* HIER KOMT DAN DE PAGINA */
}
?>
session_start();
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
session_destroy();
die('Hacking attempt!');
}else{
if(!isset($_SESSION['memberid']) && !isset($_SESSION['gebruikerniveau'])){
echo ("Om deze pagina te kunnen bekijken moet je ingelogd zijn");
}else{
session_start();
$session_data = $_SESSION;
unset($session_data['hash']);
$serial = serialize($session_data);
$md5= md5(md5(md5($serial)));
if ($_SESSION['hash'] != $md5){
session_destroy();
die('Hacking attempt!');
}else{
/* HIER KOMT DAN DE PAGINA */
}
?>
toch zegt de website steeds 'Hacking attempt!'. Ik heb nog eens gekeken naar de tutorial 'Sessie en veiligheid' maar daar staat het ook zo beschreven. Een echte fout zie ik zo niet. maar misschien zie ik weer wat over het hoofd en kunnen jullie me helpen.
Gewijzigd op 01/01/1970 01:00:00 door Rob
het moet liggen aan het controleren van de session hash zovlug ik deze eruit haalw erkt script weer prima.
bijv Watch out: Hacking attempt
dan weet je iig zeker welke de fout geeft.
IP control werkt (2e keer ;))
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
$login = 'test';
$memberid = 2;
$gebruikerniveau = 4;
session_start();
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['login'] = $login ;
$_SESSION['memberid'] = $memberid;
$_SESSION['gebruikerniveau'] = $gebruikerniveau;
$serial = serialize($_SESSION);
$md5 = md5(md5(md5($serial)));
$_SESSION['hash'] = $md5;
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
session_destroy();
die('Hacking attempt!');
}else{
if(!isset($_SESSION['memberid']) && !isset($_SESSION['gebruikerniveau'])){
echo ("Om deze pagina te kunnen bekijken moet je ingelogd zijn");
}else{
$session_data = $_SESSION;
unset($session_data['hash']);
$serial = serialize($session_data);
$md5= md5(md5(md5($serial)));
if ($_SESSION['hash'] != $md5){
session_destroy();
die('Hacking attempt!');
}else{
echo 'Je bent ingelogd';
}
}
}
?>
$login = 'test';
$memberid = 2;
$gebruikerniveau = 4;
session_start();
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['login'] = $login ;
$_SESSION['memberid'] = $memberid;
$_SESSION['gebruikerniveau'] = $gebruikerniveau;
$serial = serialize($_SESSION);
$md5 = md5(md5(md5($serial)));
$_SESSION['hash'] = $md5;
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
session_destroy();
die('Hacking attempt!');
}else{
if(!isset($_SESSION['memberid']) && !isset($_SESSION['gebruikerniveau'])){
echo ("Om deze pagina te kunnen bekijken moet je ingelogd zijn");
}else{
$session_data = $_SESSION;
unset($session_data['hash']);
$serial = serialize($session_data);
$md5= md5(md5(md5($serial)));
if ($_SESSION['hash'] != $md5){
session_destroy();
die('Hacking attempt!');
}else{
echo 'Je bent ingelogd';
}
}
}
?>
Dit werkt bij mij...
Je had 2 } te weinig, en een session_start teveel.
Zet voortaan dit boven je scripts:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
error_reporting(E_ALL);
// Geeft alle errors weer die je maar kan krijgen
// Zo zie je precies waar het mis gaat.
?>
error_reporting(E_ALL);
// Geeft alle errors weer die je maar kan krijgen
// Zo zie je precies waar het mis gaat.
?>
Willem-Jan:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
Dit werkt bij mij...
Je had 2 } te weinig, en een session_start teveel.
[/quote]
die 2 } staan er maar die was ik idd vergeten bij te zetten :).
Dit werkt bij mij...
Je had 2 } te weinig, en een session_start teveel.
[/quote]
die 2 } staan er maar die was ik idd vergeten bij te zetten :).
Maar werkt het nu?
Willem-Jan:
Maar werkt het nu?
nee :(
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
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
<?php
session_start();
$sessdata = $_SESSION;
unset($sessdata['hash']);
$sessdata_str = serialize($sessdata);
$md5hash = md5(md5(md5($sessdata_str)));
if ($_SESSION['hash'] != $md5hash){
session_destroy();
die('Hacking attempt!');
}else{
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
session_destroy();
die('Hacking attempt!');
}else{
if(!isset($_SESSION['memberid']) && !isset($_SESSION['gebruikerniveau'])){
echo ("Om deze pagina te kunnen bekijken moet je ingelogd zijn");
}else{
if ($gebruikerniveau >= 22){
/* De PAGINA IS DUS HIER */
}
}
elseif ($gebruikerniveau == 0){
echo ('Je acount is gebanned. neem contact op met de web-crew');
}else{
echo ("Je bent niet gemachtigd om deze pagina te bekijken");
}
}
}
}
?>
session_start();
$sessdata = $_SESSION;
unset($sessdata['hash']);
$sessdata_str = serialize($sessdata);
$md5hash = md5(md5(md5($sessdata_str)));
if ($_SESSION['hash'] != $md5hash){
session_destroy();
die('Hacking attempt!');
}else{
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
session_destroy();
die('Hacking attempt!');
}else{
if(!isset($_SESSION['memberid']) && !isset($_SESSION['gebruikerniveau'])){
echo ("Om deze pagina te kunnen bekijken moet je ingelogd zijn");
}else{
if ($gebruikerniveau >= 22){
/* De PAGINA IS DUS HIER */
}
}
elseif ($gebruikerniveau == 0){
echo ('Je acount is gebanned. neem contact op met de web-crew');
}else{
echo ("Je bent niet gemachtigd om deze pagina te bekijken");
}
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Rob
Quote:
Wat denk je hier te doen? De boel beter te beveiligen? Je of je 1, 2, 3 of zelfs 100x md5 toepast, de beveiliging wordt er echt niet beter van. Je stopt nog steeds dezelfde $serial in de functie...$md5 = md5(md5(md5($serial)));
Dit is schijnveiligheid. Ga eerst maar eens op zoek naar de zwakste schakel in jouw systeem, webserver en netwerkverbinding en als alles op een hetzelfde niveau is gebracht, ga je pas de lat hoger leggen. Gebruik je bijvoorbeeld wel SSL, heb je een eigen server in gebruik, etc. etc.
Edit: sha1() is trouwens een sterkere beveiliging dan md5().
Gewijzigd op 01/01/1970 01:00:00 door Frank -
heb het nu 1 keer gedaan maar daarbij is het probleem nog altijd niet opgelost. en zoiezo ik ben nu bezig met alles beter te beveiligen :)