PHP - Login script voor MsSQL (beveiliging)

Overzicht Reageren

Wouter OOP

Wouter OOP

08/09/2010 09:26:14
Quote
Goedemorgen,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.
    }
    
}


?>


<!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>&nbsp;</td>
<td><input type="submit" name="button" id="button" value="Inloggen" /></td>
</tr>
</table>
</form>
</body>
</html>
 
PHP hulp

PHP hulp

09/02/2012 09:45:24
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Pim -

Pim -

08/09/2010 09:36:26
Quote
Nee.
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 -
 
Wouter OOP

Wouter OOP

08/09/2010 09:42:12
Quote
Oke bedankt. mysql_real_escape_string() werkt niet op een MsSQL server.
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
 
- Dave -

- Dave -

08/09/2010 09:45:44
Quote
Je zegt alleen $_SESSION['Gebruikersnaam'] maar er staat nergens wat dit moet bevatten.

$_SESSION['Gebruikersnaam'] = $gebruikersnaam;
Hoort het als het goed is te zijn ;)
 
Wouter OOP

Wouter OOP

08/09/2010 09:58:33
Quote
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 ;)


Bedankt voor je reactie. Kan iemand nog een aantal vragen beantwoorden in mijn vorige post?
 
- Aar -

- Aar -

08/09/2010 11:49:16
Quote
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function mssql_real_escape_string($str) {
   $escape = "/([\x00\n\r\,\'\"\x1a])/ig";
   return($escape, "\$1", $str);
}
 
Wouter OOP

Wouter OOP

08/09/2010 12:09:22
Quote
Bedankt voor je reactie.

return($escape, "\$1", $str);

dit werkt niet. wat is hier fout?
 



Overzicht Reageren