let-op-met-md5-in-query
Gesponsorde koppelingen
PHP script bestanden
Bij een inlogcontrole wordt vaak de volgende SQL-code gebruikt:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = MD5('".mysql_real_escape_string($_POST['password'])."')";
?>
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = MD5('".mysql_real_escape_string($_POST['password'])."')";
?>
In de logs van SQL zal deze query dus op de volgende manier worden opgeslagen:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
id
FROM
users
WHERE
username = 'de gebruikersnaam'
AND password = MD5('het wachtword')
id
FROM
users
WHERE
username = 'de gebruikersnaam'
AND password = MD5('het wachtword')
Iemand die bij de logs kan kan dus heel gemakkelijk alle wachtwoorden achterhalen, niet echt veilig dus.
Wanneer we de volgende query gebruiken:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = '".md5($_POST['password'])."'";
?>
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = '".md5($_POST['password'])."'";
?>
Zal het volgende in de logs komen te staan:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
id
FROM
users
WHERE
username = 'de gebruikersnaam'
AND password = '90d18c7f83dcf74e3317ffc943aeff30'
id
FROM
users
WHERE
username = 'de gebruikersnaam'
AND password = '90d18c7f83dcf74e3317ffc943aeff30'
Op deze manier kan zelfs iemand die bij de logs kan niet de wachtwoorden zien. Een heel stuk veiliger dus.