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.php

    der code ist also:

    $user = htmlentities(trim($_POST[user]));
    

    edit3: Borschtsch's code ist besser..

    edit2:
    und im querry waere folgendes viel gefaehrlicher

    g"; 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




Anmelden zum Antworten