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
Nog geen reacties.