PHP - Login script voor MsSQL (beveiliging)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Wouter OOP

Wouter OOP

08/09/2010 09:26:14
Quote Anchor link
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

18/04/2024 20:41:23
 
Pim -

Pim -

08/09/2010 09:36:26
Quote Anchor link
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 Anchor link
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 Anchor link
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 Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

08/09/2010 11:49:16
Quote Anchor link
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 Anchor link
Bedankt voor je reactie.

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

dit werkt niet. wat is hier fout?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.