Sicherheitslücke
-
ich kann Php nicht allzu gut, da ich es selten brauche, deswegen wüsste ich gerne ob folgender Code eine Sicherheitslücke dar stellt:
$user = trim($_POST[user]); $query = 'SELECT COUNT(*) FROM mitglieder where(nick="'.$user.'")'; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result);
die Variable "$_POST[user]" kann beliebig vom Seitenaufrufenden eingestellt werden
ich könnte mir vorstellen das man etwas wie
a" OR (...)"in "$_POST[user]" übergeben könnte
und somit Daten abfragen auf die man eigentlich keinen zugriff hat
das System könnte natürlich immer nur mit ja oder nein antworten, aber das würde für Hashs reichen
-
ja, ist ne sicherheitsluecke drinn.
und deine vorstellung ist korrekt..
bin mir nicht ganz sicher ob die fkt so heist, aber es gibt sowas wie htmlentity("blub") oder so..
edit:
http://www.php.net/manual/de/function.htmlentities.phpder code ist also:
$user = htmlentities(trim($_POST[user]));
edit3: Borschtsch's code ist besser..
edit2:
und im querry waere folgendes viel gefaehrlicherg"; DELETE FROM mitglieder;
bin mir aber nicht sicher, ob da nicht ein typo drinn ist. aber so in der art geht das..
mfg aman..
-
Moin,
ich habe für mein letztes Projekt sowas in der Art geschrieben:
// Liefert eine saubere, MySQL-freundliche Zeichenkette function escape_mysql_string_gpc($str, &$mysql_res) // $str ist z.B. deine $_POST['user'], $mysql_res ist die MySQL-Resource { return trim(get_magic_quotes_gpc() ? mysql_real_escape_string(stripslashes($str), $mysql_res) : mysql_real_escape_string($str, $mysql_res); }
Damit solltest Du unabhängig von der Server-Einstellung magic_quotes_gpc sicher fahren.
Ach, und benutze doch bitte die Klammern für assoziative Indexe: $_POST['user'].
Gruß Borschtsch
-