niet meer mogen inloggen
Pagina: « vorige 1 2 3 4 volgende »
Cookies kan je uitschakelen of verwijderen.. dan heeft kan de persoon dus gewoon doorgaan met proberen in te loggen.
Allereerst moet de persoon die probeert in te loggen beschikken over een correcte gebruikersnaam en vervolgens moet daar een correct wachtwoord bij gevonden worden. Vertel bij een foute inlogpoging dus niet dat bijvoorbeeld een gebruikersnaam niet bestaat, maar gewoon dat het inloggen niet gelukt is. Dan weet die persoon ook niet of een gebruikersnaam juist is.
Heeft hij wel een juiste gebruikersnaam te pakken, blokkeer dat account dan na 5 foute inlogpogingen bijvoorbeeld voor 10 minuten. En blokkeer het account volledig als het foute inloggen na die 10 minuten doorgaat. In beide gevallen stuur je een mailtje naar het email-adres dat bij dat account hoort met de mededeling dat er meerdere malen fout ingelogd is en de vraag of de gebruiker een nieuw wachtwoord aan wil maken. Bij definitieve blokkade is dat de enige mogelijkheid.
Zoals je ziet komt het ip-adres in dit hele verhaal nog niet eens naar voren omdat je een gebruiker daaraan nooit uniek kunt identificeren. Uiteraard sla je het ip-adres wel op bij een foute inlogpoging en enkel als blijkt dat vanaf dat adres doelbewuste hackpogingen gedaan worden, zou je het kunnen blokkeren. Maar als het om een doelbewuste hacker gaat, zal deze snel genoeg terug zijn via bijvoorbeeld een proxy, dat houdt je toch niet tegen...
Bij het inloggen (als uiteindelijk alles goed is) word er een lange string van letters en nummers gemaakt in $_SESSION['user_id']. En die word ook in de database gezet. Maar hoe zorg ik er nou echt voor dat er niet zomaar iemand op die pagina komt.
Ik heb al iets gevonden over session_start() .. maar daar snapte ik niet hoe ik die nou in verband breng met die lange string.
bump ...
bedoel je de pagina waar je eigenlijk ingelogd moet zijn?
die beveilig je natuurlijk.
naar de volgende pagina. Zodat ik daar kan kijken of dat nummer ergens in de database staat bij een persoon. En die persoon is dan de ingelogde.
Gewijzigd op 01/01/1970 01:00:00 door J A
vervolgens kun je $_SESSION['user_id'] gewoon aanroepen
http://jordi.frih.net/test/sessiontest1.php
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$_SESSION['test'] = "grappig";
echo $_SESSION['test'];
echo '<br /><br /><br /><br />';
echo '<a href="sessiontest.php">ga verder</a>';
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
$_SESSION['test'] = "grappig";
echo $_SESSION['test'];
echo '<br /><br /><br /><br />';
echo '<a href="sessiontest.php">ga verder</a>';
?>
Er word dan doorgelinkt naar sessiontest.php
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo $_SESSION['test'];
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo $_SESSION['test'];
Maar ik krijg het niet voor elkaar om die session['test'] daar te echoën :s
Dat komt omdat op je eerste pagina ook session_start(); moet staan, anders maak je geen sessies aan.
Oh .. en om zo'n stomme fout zit ik nu al een hele tijd te kloten. Het is gelukt. Thx ;)
http://jordi.frih.net/KlantenSysteem/admin/
Als je daar naar toe gaat, kijkt een script of je bent ingelogd. Dat zal niet zo zijn. En je word doorgestuurd naar login.php. Daar kun je inloggen
(gb: admin, ww: admin). Als je dan op inloggen klikt, blijft hij bij mij gewoon stilstaan.
Dan na een tijdje klik ik op 'stop' in mijn browser. Ik ga opnieuw naar index.php en daar blijft hij ook gewoon stilstaan. Ik ga dan specifiek naar http://jordi.frih.net/KlantenSysteem/admin/login.php en krijg 3 errors te zien :s. En pas als ik dan naar http://jordi.frih.net/KlantenSysteem/admin/uitloggen.php ga. (daar word de sessie verwijderd). Kan ik weer opnieuw beginnen en dan gebeurt het verhaaltje opnieuw.
de 3 errors:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
Notice: Undefined variable: query1 in /home/jordi/domains/jordi.frih.net/public_html/KlantenSysteem/admin/login.php on line 53
Notice: Undefined variable: query1 in /home/jordi/domains/jordi.frih.net/public_html/KlantenSysteem/admin/login.php on line 55
Notice: Query was empty
In query: in /home/jordi/domains/jordi.frih.net/public_html/KlantenSysteem/admin/login.php on line 55
Notice: Undefined variable: query1 in /home/jordi/domains/jordi.frih.net/public_html/KlantenSysteem/admin/login.php on line 55
Notice: Query was empty
In query: in /home/jordi/domains/jordi.frih.net/public_html/KlantenSysteem/admin/login.php on line 55
Specifiek gedeelte in login.php waar het waarschijnlijk verkeerd gaat.
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(isset($_SESSION['user_id']))
{
$query = "
SELECT
a1.id,
a1.user_id,
a2.id,
a2.url
FROM
admin AS a1,
algemeen AS a2
WHERE
a1.id = '1' AND
a2.id = '1'
";
if(!$res1 = mysql_query($query1))
{
trigger_error(mysql_error().'<br />In query: '.$query1);
}
else
{
if($_SESSION['user_id'] != $row['user_id'])
{
echo $login['admin']['fout'];
}
else
{
header('Location: '.$row['url'].'admin/index.php');
}
}
}
else
{
// formulier en controle enzovoort...
?>
if(isset($_SESSION['user_id']))
{
$query = "
SELECT
a1.id,
a1.user_id,
a2.id,
a2.url
FROM
admin AS a1,
algemeen AS a2
WHERE
a1.id = '1' AND
a2.id = '1'
";
if(!$res1 = mysql_query($query1))
{
trigger_error(mysql_error().'<br />In query: '.$query1);
}
else
{
if($_SESSION['user_id'] != $row['user_id'])
{
echo $login['admin']['fout'];
}
else
{
header('Location: '.$row['url'].'admin/index.php');
}
}
}
else
{
// formulier en controle enzovoort...
?>
Het script dat kijkt of je bent ingelogd (maar volgens mij zit hier geen fout in.)
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
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
<?php
[code]<?php
session_start();
$query = "
SELECT
a1.id,
a1.user_id,
a2.id,
a2.url
FROM
admin AS a1,
algemeen AS a2
WHERE
a1.id = '1' AND
a2.id = '1'
";
if(!$res = mysql_query($query))
{
trigger_error(mysql_error().'<br />In query: '.$query);
}
else
{
$row = mysql_fetch_assoc($res);
if(!isset($_SESSION['user_id']))
{
header('Location: '.$row['url'].'admin/login.php');
}
else
{
if($_SESSION['user_id'] != $row['user_id'])
{
header('Location: '.$row['url'].'admin/login.php');
}
else
{
header('Location: '.$row['url'].'admin/index.php');
}
}
}
?>
?>
[code]<?php
session_start();
$query = "
SELECT
a1.id,
a1.user_id,
a2.id,
a2.url
FROM
admin AS a1,
algemeen AS a2
WHERE
a1.id = '1' AND
a2.id = '1'
";
if(!$res = mysql_query($query))
{
trigger_error(mysql_error().'<br />In query: '.$query);
}
else
{
$row = mysql_fetch_assoc($res);
if(!isset($_SESSION['user_id']))
{
header('Location: '.$row['url'].'admin/login.php');
}
else
{
if($_SESSION['user_id'] != $row['user_id'])
{
header('Location: '.$row['url'].'admin/login.php');
}
else
{
header('Location: '.$row['url'].'admin/index.php');
}
}
}
?>
?>
*bump* .. sorry:$
Dit zou dus moeten werken:
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(isset($_SESSION['user_id']))
{
$query1 = "
SELECT
a1.id,
a1.user_id,
a2.id,
a2.url
FROM
admin AS a1,
algemeen AS a2
WHERE
a1.id = '1' AND
a2.id = '1'
";
if(!$res1 = mysql_query($query1))
{
trigger_error(mysql_error().'<br />In query: '.$query1);
}
else
{
if($_SESSION['user_id'] != $row['user_id'])
{
echo $login['admin']['fout'];
}
else
{
header('Location: '.$row['url'].'admin/index.php');
}
}
}
else
{
// formulier en controle enzovoort...
?>
if(isset($_SESSION['user_id']))
{
$query1 = "
SELECT
a1.id,
a1.user_id,
a2.id,
a2.url
FROM
admin AS a1,
algemeen AS a2
WHERE
a1.id = '1' AND
a2.id = '1'
";
if(!$res1 = mysql_query($query1))
{
trigger_error(mysql_error().'<br />In query: '.$query1);
}
else
{
if($_SESSION['user_id'] != $row['user_id'])
{
echo $login['admin']['fout'];
}
else
{
header('Location: '.$row['url'].'admin/index.php');
}
}
}
else
{
// formulier en controle enzovoort...
?>
En daarnaast heb je in je tweede code 2x < ?php en ?>
wss deed ie da voor phphulp. voor syntaxmarkering, ma da stond er nog in:) dus dubbel
heb ik hier fout getypt idd :)
De errors zijn nu weg .. Maar het werkt nog niet. Bij het inloggen staat hij gewoon echt vast (op meerdere servers geprobeerd). Als de session bestaat kan ik niks meer ... geen errors of wat dan ook. Bij het laden blijft hij gewoon heeltijd op 30% ofzo staan ....
Jullie kunnen het nog steeds uitproberen .. http://jordi.frih.net/KlantenSysteem/admin
inloggen met: admin + admin
Dat De errors zijn nu weg .. Maar het werkt nog niet. Bij het inloggen staat hij gewoon echt vast (op meerdere servers geprobeerd). Als de session bestaat kan ik niks meer ... geen errors of wat dan ook. Bij het laden blijft hij gewoon heeltijd op 30% ofzo staan ....
Jullie kunnen het nog steeds uitproberen .. http://jordi.frih.net/KlantenSysteem/admin
inloggen met: admin + admin
hoe verwerk je het inlogformulier? want daar zit volgensmij de fout
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$_SESSION['errors'] = array();
$_SESSION['input'] = array();
$formuliervelden = array(
'naam' => 'text',
'wachtwoord' => 'text',
);
$no_check = array('');
foreach($formuliervelden as $veld => $type)
{
if($type == 'checkbox')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = $faq['form']['controle']['checkbox'].$veld;
}
else
{
$_SESSION['input'][$veld] = $_POST[$veld];
}
}
elseif($type == 'radio')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = $faq['form']['controle']['radio'].$veld;
}
else
{
$_SESSION['input'][$veld] = $_POST[$veld];
}
}
else
{
if(isset($_POST[$veld]))
{
$value = $_POST[$veld];
$_SESSION['input'][$veld] = $value;
if(in_array($veld, $no_check))
{
continue;
}
else
{
if(empty($value))
{
$_SESSION['errors'][$veld] = true;
$errors[] = $faq['form']['controle']['overig'].$veld;
}
}
}
else
{
$errors[] = $faq['form']['controle']['ontbreekt'].$veld;
}
}
}
$query = "
SELECT
*
FROM
admin
LIMIT
1
";
if(!$res = mysql_query($query))
{
trigger_error(mysql_error().'<br />In query: '.$query);
}
else
{
$row = mysql_fetch_assoc($res);
if($_POST['naam'] != $row['naam'])
{
$_SESSION['errors']['naam'] = true;
$_SESSION['errors']['wachtwoord'] = true;
$errors[] = $login['admin']['mislukt'];
}
else
{
if(md5(sha1($_POST['wachtwoord'])) != $row['wachtwoord'])
{
$_SESSION['errors']['naam'] = true;
$_SESSION['errors']['wachtwoord'] = true;
$errors[] = $login['admin']['mislukt'];
}
}
}
if(empty($_SESSION['errors']))
{
$_SESSION['user_id'] = sha1(md5(date('djlNSwFMtLoYiaGpru')));
$query2 = "
UPDATE
admin
SET
user_id = '".$_SESSION['user_id']."'
WHERE
id = '1'
";
if(!$res2 = mysql_query($query2))
{
trigger_error(mysql_error().'<br />In query: '.$query2);
}
elseif(mysql_affected_rows() == 0)
{
echo $login['admin']['fout'];
}
else
{
header('Location: index.php');
echo '<meta http-equiv="REFRESH" content="0; URL=index.php">';
}
}
if(isset($errors))
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
elseif(isset($content))
{
foreach($content as $line)
{
echo $line;
}
}
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$_SESSION['errors'] = array();
$_SESSION['input'] = array();
$formuliervelden = array(
'naam' => 'text',
'wachtwoord' => 'text',
);
$no_check = array('');
foreach($formuliervelden as $veld => $type)
{
if($type == 'checkbox')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = $faq['form']['controle']['checkbox'].$veld;
}
else
{
$_SESSION['input'][$veld] = $_POST[$veld];
}
}
elseif($type == 'radio')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = $faq['form']['controle']['radio'].$veld;
}
else
{
$_SESSION['input'][$veld] = $_POST[$veld];
}
}
else
{
if(isset($_POST[$veld]))
{
$value = $_POST[$veld];
$_SESSION['input'][$veld] = $value;
if(in_array($veld, $no_check))
{
continue;
}
else
{
if(empty($value))
{
$_SESSION['errors'][$veld] = true;
$errors[] = $faq['form']['controle']['overig'].$veld;
}
}
}
else
{
$errors[] = $faq['form']['controle']['ontbreekt'].$veld;
}
}
}
$query = "
SELECT
*
FROM
admin
LIMIT
1
";
if(!$res = mysql_query($query))
{
trigger_error(mysql_error().'<br />In query: '.$query);
}
else
{
$row = mysql_fetch_assoc($res);
if($_POST['naam'] != $row['naam'])
{
$_SESSION['errors']['naam'] = true;
$_SESSION['errors']['wachtwoord'] = true;
$errors[] = $login['admin']['mislukt'];
}
else
{
if(md5(sha1($_POST['wachtwoord'])) != $row['wachtwoord'])
{
$_SESSION['errors']['naam'] = true;
$_SESSION['errors']['wachtwoord'] = true;
$errors[] = $login['admin']['mislukt'];
}
}
}
if(empty($_SESSION['errors']))
{
$_SESSION['user_id'] = sha1(md5(date('djlNSwFMtLoYiaGpru')));
$query2 = "
UPDATE
admin
SET
user_id = '".$_SESSION['user_id']."'
WHERE
id = '1'
";
if(!$res2 = mysql_query($query2))
{
trigger_error(mysql_error().'<br />In query: '.$query2);
}
elseif(mysql_affected_rows() == 0)
{
echo $login['admin']['fout'];
}
else
{
header('Location: index.php');
echo '<meta http-equiv="REFRESH" content="0; URL=index.php">';
}
}
if(isset($errors))
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
elseif(isset($content))
{
foreach($content as $line)
{
echo $line;
}
}
}
?>
Het lijkt erop dat er een oneindige loop in je index.php zit. Als je eenmaal ingelogd bent wordt je telkens weer naar index.php gestuurd waardoor de pagina nooit geladen kan worden...