Scripts
Let op met MD5 in Query
We hebben nu een categorie "snippets" dus bij deze post ik het voorbeeldje wat ik in het topic genoemd heb maar eens op de plek waar het hoort. Dit is een fout die vaak gemaakt wordt; mensen die een string die de database in gaat ook door de database laten coderen. Wat ze dan niet doorhebben is dat de string onbeschermd over de lijn gaat, maar nog veel belangrijker: onbeschermd in de logs wordt opgeslagen . Hieronder een voorbeeldje
let-op-met-md5-in-query
Bij een inlogcontrole wordt vaak de volgende SQL-code gebruikt:
<?php
$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]
SELECT
id
FROM
users
WHERE
username = 'de gebruikersnaam'
AND password = MD5('het wachtword')
[/code]
Iemand die bij de logs kan kan dus heel gemakkelijk alle wachtwoorden achterhalen, niet echt veilig dus.
Wanneer we de volgende query gebruiken:
<?php
$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]
SELECT
id
FROM
users
WHERE
username = 'de gebruikersnaam'
AND password = '90d18c7f83dcf74e3317ffc943aeff30'
[/code]
Op deze manier kan zelfs iemand die bij de logs kan niet de wachtwoorden zien. Een heel stuk veiliger dus.
Reacties
0