PHP - Login script voor MsSQL (beveiliging)
Ik heb een login script gemaakt voor een MsSQL database en ik vraag me af of deze genoeg beveiligd is tegen elke vorm van injectie.
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
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
<?php
if (isset($_REQUEST['login']))
{
mssql_connect('localhost', 'test', 'test') or die('Kan niet verbinden met database');
mssql_select_db('test2');
$Gebruikersnaam = str_replace("'", "''", $_POST['Gebruikersnaam']);
$Wachtwoord = str_replace("'", "''", sha1($_POST['Wachtwoord']));
$Query = mssql_query("
SELECT Gebruikersnaam
FROM Gebruikers
WHERE Gebruikersnaam = '$Gebruikersnaam'
AND Wachtwoord = '$Wachtwoord'
")
or die(mssql_error());
$Totaal = mssql_num_rows($Query);
if($Totaal > 0)
{
session_start();
$_SESSION['Gebruikersnaam'];
header('location: test.php');
}
else
{
// niks doen.
}
}
?>
if (isset($_REQUEST['login']))
{
mssql_connect('localhost', 'test', 'test') or die('Kan niet verbinden met database');
mssql_select_db('test2');
$Gebruikersnaam = str_replace("'", "''", $_POST['Gebruikersnaam']);
$Wachtwoord = str_replace("'", "''", sha1($_POST['Wachtwoord']));
$Query = mssql_query("
SELECT Gebruikersnaam
FROM Gebruikers
WHERE Gebruikersnaam = '$Gebruikersnaam'
AND Wachtwoord = '$Wachtwoord'
")
or die(mssql_error());
$Totaal = mssql_num_rows($Query);
if($Totaal > 0)
{
session_start();
$_SESSION['Gebruikersnaam'];
header('location: test.php');
}
else
{
// niks doen.
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="login-form.php?login">
<table width="293" align="center">
<tr>
<td width="172">Gebruikersnaam</td>
<td width="105"><input type="text" name="Gebruikersnaam" id="Gebruikersnaam" /></td>
</tr>
<tr>
<td>Wachtwoord</td>
<td><input type="text" name="Wachtwoord" id="Wachtwoord" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="button" id="button" value="Inloggen" /></td>
</tr>
</table>
</form>
</body>
</html>
exit() na een redirect!!!
Gebruik geen str_replace() maar mysql_real_escape_string()
Gebruik een salt bij je sha1()
Weergave mysql_error()
En verder:
Gebruik geen die()
$_SESSION['Gebruikersnaam']; slaat nergens op
Foutafhandeling als de POST variabelen niet zijn geset.
Ook is de correcte manier if($_SERVER['REQUEST_METHOD'] == 'POST')
Gewijzigd op 08/09/2010 09:37:26 door Pim -
Exit na een redirect??
Waarom slaat session nergens op? Heb ik toch nodig om ingelogd te blijven op een andere pagina? Ik heb dit overigens van een tutorial gemaakt voor MySQL.
Weergave mysql_error(). Waarom geen die en dan mssql_error()?
Server request method heb ik inderdaad eerder van gehoord maar wat was precies de reden dat dat de juiste manier is?
Bedankt voor je reactie.
Gewijzigd op 08/09/2010 09:52:38 door Wouter OOP
$_SESSION['Gebruikersnaam'] = $gebruikersnaam;
Hoort het als het goed is te zijn ;)
Dave Jong op 08/09/2010 09:45:44:
Je zegt alleen $_SESSION['Gebruikersnaam'] maar er staat nergens wat dit moet bevatten.
$_SESSION['Gebruikersnaam'] = $gebruikersnaam;
Hoort het als het goed is te zijn ;)
$_SESSION['Gebruikersnaam'] = $gebruikersnaam;
Hoort het als het goed is te zijn ;)
Bedankt voor je reactie. Kan iemand nog een aantal vragen beantwoorden in mijn vorige post?
return($escape, "\$1", $str);
dit werkt niet. wat is hier fout?