Thema Sicherheit: mysql_real_escape_string() & magic_quotes_gpc

Das scheint soweit wo nun alles dementsprechend aktualisiert ist ohne Fehler zu funktionieren.

Nur bei einer einzigen Sache bin ich noch unsicher. Und zwar dort wo ich für den Mitgliederbereich das Passwort verschlüssel.


Das geschah bislang folgendermaßen:
PHP:
        $result = mysql_query("insert into tabelle (login,passwort,email) values('$login',PASSWORD('$passwd'),'$email')");
und abgefragt wurde es dann beim einloggen in einem anderen Skript mit:
PHP:
        $result = mysql_query("SELECT besitzerid FROM tabelle WHERE login='$login' and passwort=PASSWORD('$passwd')");


In welcher Syntax muss das aber nun mit md5 und Maskierung geschehen? Ich dachte folgendermaßen:

PHP:
 $result = mysql_query("insert into tabelle (login,passwort,email) values ('".mysql_real_escape_string($login)."',md5('".mysql_real_escape_string($passwd)."'),
   '".mysql_real_escape_string($email)."')");
und
PHP:
 $result = mysql_query("SELECT besitzerid FROM tabelle WHERE login='".mysql_real_escape_string($login)."' and passwort=md5('".mysql_real_escape_string($passwd)."')");

Meine hoffentlich letzte Frage zu diesem Thema: Kann ich das Ganze nun somit als balbwegs injektionssicher betrachten und ist die Verschlüsselung mit md5 (weil hexadezimal) besser als die mit PASSWORD ?
 
Auch PHP besitzt die md5()-Funktion. Damit könntest du den Hash-Wert berechnen ohne noch zusätzlich eine maskierende Funktion wie mysql_real_escape_string() einsetzen zu müssen:
PHP:
<?php

	…
	$query = "
		SELECT
		        `besitzerid`
		  FROM
		        `tabelle`
		  WHERE
		        `login`    = '".mysql_real_escape_string($login)."'
		    AND `passwort` = '".md5($passwd)."'
		";
	$result = mysql_query($query);
	…

?>
Das ist auch einer der Vorteile gegenüber MySQLs PASSWORD()-Funktion: sie ist einfach in fast jeder Programmier- bzw. Skriptsprache sowohl server- als auch clientseitig verfügbar.
 
Vielen Dank für die Aufklärung. Da es scheinbar auch so funktioniert, wie ich es nun gemacht habe, lasse ich es aber erst einmal so. Es sei denn es spricht irgendetwas dagegen.
 
Zurück