login script - verbeterpunten?
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
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
<?php
// start sessie
session_start();
// include config ( database connectie )
Include 'includes/config.php';
// als de sessie al is aangemaakt
if(isset($_SESSION['user']))
{
Echo "je bent al ingelogd";
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$query= "SELECT u_name, u_pass FROM SFI_users WHERE u_name='".mysql_real_escape_string($_POST['naam'])."'";
$get = mysql_query($query);
$aantal = mysql_num_rows($get);
$login = mysql_fetch_assoc($get);
if(md5($_POST['pass']) == $login["u_pass"] && strtolower($_POST['naam']) == $login["u_name"])
{
$errors = 'U bent succesvol ingelogd!';
// Als er succesvol is ingelogd
$_SESSION['user'] = $_POST['naam'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
} Else
{
$errors = 'Uw inloggegevens zijn onjuist!';
}
}
?>
<html>
<head>
<style type="text/css">
body {
background-color:#9E99FF;
}
#centered
{
position: absolute;
top: 50%; left: 50%; right: 50%; bottem: 50%;
border-width: 1px; border-style: solid;
border-color: #336699;
background-color:#E8FFE2;
width: 400px; height: 400px;
margin: -200px 0 0 -200px;
}
</style>
<title>SFI login panel</title>
</head>
<body>
<div style="text-align: center; left: 666px; width: 307px; top: 297px; height: 183px;" id="centered"><big style="color: rgb(51, 51, 51);"><big style="font-family: Miriam;"><big><span style="color: rgb(51, 51, 51);"><span style="color: rgb(43, 233, 26);">L<span style="color: rgb(51, 51, 51);">ogin </span></span></span><span style="color: rgb(43, 233, 26);">P</span>anel </big></big></big>
<span style="color: rgb(255, 18, 3);"><small><br><b>
<?php Echo $errors; ?>
</b></small></span>
<br><br><br>
<form action="" method="post"><span style="color: rgb(51, 51, 51); font-weight: bold;"><span style="color: rgb(43, 233, 26);">U</span>sername:</span>
<input name="naam" type="text"> <br>
<span style="color: rgb(43, 233, 26); font-weight: bold;">P</span><span style="color: rgb(51, 51, 51); font-weight: bold;">assword:</span>
<input name="pass" type="password"><br>
<input value="Login" name="login" type="submit">
</form>
</div>
<br><br>
</body>
</html>
// start sessie
session_start();
// include config ( database connectie )
Include 'includes/config.php';
// als de sessie al is aangemaakt
if(isset($_SESSION['user']))
{
Echo "je bent al ingelogd";
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$query= "SELECT u_name, u_pass FROM SFI_users WHERE u_name='".mysql_real_escape_string($_POST['naam'])."'";
$get = mysql_query($query);
$aantal = mysql_num_rows($get);
$login = mysql_fetch_assoc($get);
if(md5($_POST['pass']) == $login["u_pass"] && strtolower($_POST['naam']) == $login["u_name"])
{
$errors = 'U bent succesvol ingelogd!';
// Als er succesvol is ingelogd
$_SESSION['user'] = $_POST['naam'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
} Else
{
$errors = 'Uw inloggegevens zijn onjuist!';
}
}
?>
<html>
<head>
<style type="text/css">
body {
background-color:#9E99FF;
}
#centered
{
position: absolute;
top: 50%; left: 50%; right: 50%; bottem: 50%;
border-width: 1px; border-style: solid;
border-color: #336699;
background-color:#E8FFE2;
width: 400px; height: 400px;
margin: -200px 0 0 -200px;
}
</style>
<title>SFI login panel</title>
</head>
<body>
<div style="text-align: center; left: 666px; width: 307px; top: 297px; height: 183px;" id="centered"><big style="color: rgb(51, 51, 51);"><big style="font-family: Miriam;"><big><span style="color: rgb(51, 51, 51);"><span style="color: rgb(43, 233, 26);">L<span style="color: rgb(51, 51, 51);">ogin </span></span></span><span style="color: rgb(43, 233, 26);">P</span>anel </big></big></big>
<span style="color: rgb(255, 18, 3);"><small><br><b>
<?php Echo $errors; ?>
</b></small></span>
<br><br><br>
<form action="" method="post"><span style="color: rgb(51, 51, 51); font-weight: bold;"><span style="color: rgb(43, 233, 26);">U</span>sername:</span>
<input name="naam" type="text"> <br>
<span style="color: rgb(43, 233, 26); font-weight: bold;">P</span><span style="color: rgb(51, 51, 51); font-weight: bold;">assword:</span>
<input name="pass" type="password"><br>
<input value="Login" name="login" type="submit">
</form>
</div>
<br><br>
</body>
</html>
is dit script veilig?
en wat kan ik eraan verbeteren ?
ik ben bereid aantepassen wat ik kan verbeteren
note:
Echo "je bent al ingelogd";
hier komt nog doorlinking naar het user control panel
dus hier niet zo zeer op letten
kan er ook een verbetering in de layout?
note:
ik wil het login panel opzich simpel houden
Toevoeging op 14/12/2010 17:55:22:
voorbeeld : klik hier
Gewijzigd op 15/12/2010 15:20:44 door Jordi Kroon
wat houd ="" in? het zit in je submit
zal het er even uithalen
t verandert ook niks in de code
Toevoeging op 14/12/2010 18:06:53:
--done
- Waarom md5 en geen SHA...
- bij je SQL geen * gebruiken maar precies zeggen wat je er uit wilt halen
waarom zet de IP in de sessie ip?
waarom doe ik dit niet:
op veel websites doen ze dit niet heb ik gezien
mensen moeten toch inloggen en het klopt ook dat als ze niks invullen de gebruikersnaam niet bestaat of dat het wachtwoord niet bestaat
over de wildcard zal ik even veranderen
Toevoeging op 14/12/2010 18:49:18:
-- done
Misschien een tip, geef hackers zo min mogelijk informatie... dus bij verkeerde gebruikersnaam/wachtwoord... hou het gewoon algemeen zoals "Gebruikersnaam en/of wachtwoord niet juist". in plaats van "wachtwoord niet goed", hierin geef je dan namelijk aan dat de username wel goed is...
http://validator.w3.org/check?uri=http://www.sficlan.com/test/login.php&charset=(detect+automatically)&doctype=XHTML+1.0+Transitional&group=0
ook je html is niet valid: Gewijzigd op 14/12/2010 19:16:06 door Vincent Huisman
Marvin Houweling op 14/12/2010 19:09:53:
Misschien een tip, geef hackers zo min mogelijk informatie... dus bij verkeerde gebruikersnaam/wachtwoord... hou het gewoon algemeen zoals "Gebruikersnaam en/of wachtwoord niet juist". in plaats van "wachtwoord niet goed", hierin geef je dan namelijk aan dat de username wel goed is...
Oftewel: Check niet of een gebruikersnaam bestaat, maar dump gewoon de gebruikersnaam en password + salt in query en kijk of er iets uit komt.
die is nu opgelost:
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.sficlan.com%2Ftest%2Flogin.php&charset=%28detect+automatically%29&doctype=Inline&group=0&user-agent=W3C_Validator%2F1.1
@marvin zou het even aanpassen dankjewel
@ wouter als je goed had gekeken zag je dat ik deze erook bij had gedaan
$errors = 'U bent succesvol ingelogd!';
omdat er altijd maar 1 error maximaal is dacht ik van doe ik het ook maar even zo
voor gemak
Toevoeging op 14/12/2010 20:48:23:
Ik zit nu met een klein probleempje
Het is niet super maar wel voor gebruikersgemak
Als je nu inlogd zijn de loginnamen hoofdletter gevoelig
Hoe moet ik dit dan doen
Toevoeging op 15/12/2010 08:40:20:
Zou iemand Dit weten
je kan strotolower() gebruiken
heb dit veranderd:
Code (php)
in dit
Code (php)
1
2
3
2
3
<?php
if(md5($_POST['pass']) == $login->u_pass && strtolower($_POST['naam']) == $login->u_name)
?>
if(md5($_POST['pass']) == $login->u_pass && strtolower($_POST['naam']) == $login->u_name)
?>
Toevoeging op 15/12/2010 15:08:23:
heeft iemand nog tips?
Toevoeging op 15/12/2010 15:20:30:
update: ik heb er nog even mysql_fetch_assoc van gemaakt
Gewijzigd op 15/12/2010 14:57:58 door Jordi Kroon
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
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
<?php
session_start();
include 'includes/config.php';
if ( isset ( $_SESSION["user"] ) )
{
echo "Je bent al ingelogd!";
}
else if ( $_SERVER["REQUEST_METHOD"] == "POST" )
{
$sql = "SELECT u_name, u_pass FROM SFI_users WHERE u_name = '" . mysql_real_escape_string ( $_POST["naam"] ) . "'";
$query = mysql_query ( $sql );
$row = mysql_fetch_assoc ( $query );
if ( mysql_num_rows ( $get ) > 0 AND md5 ( $_POST["pass"] ) == $row->u_pass AND strtolower ( $_POST['naam'] ) == $row->u_name)
{
$errors = 'Je bent succesvol ingelogd!';
$_SESSION["user"] = $_POST["naam"];
$_SESSION["ip"] = $_SERVER["REMOTE_ADDR"];
}
else
{
$errors = 'Jouw inloggegevens zijn onjuist!';
}
}
?>
session_start();
include 'includes/config.php';
if ( isset ( $_SESSION["user"] ) )
{
echo "Je bent al ingelogd!";
}
else if ( $_SERVER["REQUEST_METHOD"] == "POST" )
{
$sql = "SELECT u_name, u_pass FROM SFI_users WHERE u_name = '" . mysql_real_escape_string ( $_POST["naam"] ) . "'";
$query = mysql_query ( $sql );
$row = mysql_fetch_assoc ( $query );
if ( mysql_num_rows ( $get ) > 0 AND md5 ( $_POST["pass"] ) == $row->u_pass AND strtolower ( $_POST['naam'] ) == $row->u_name)
{
$errors = 'Je bent succesvol ingelogd!';
$_SESSION["user"] = $_POST["naam"];
$_SESSION["ip"] = $_SERVER["REMOTE_ADDR"];
}
else
{
$errors = 'Jouw inloggegevens zijn onjuist!';
}
}
?>
dan moet je ipv $row->u_pass , $row["u_pass"] doen
Dat werkt bij mij prima ;)
zou kunnen maar zo hoort het eigenlijk niet
Gewijzigd op 17/12/2010 10:46:40 door Chris -
Antwoord van anny php ziet er voor mij uit als spam.
Toevoeging op 17/12/2010 14:11:43:
of verbeterpuntjes
sha1() gaan in plaats van md5().
Het is al genoemd en ik weet ook niet of het er al in verwerkt is maar; ik zou sowieso voor