[Python-de] mysql gefährliche zeichen "escapen"

Paul Rauch LightLan at lightlan.de
Fr Feb 2 17:32:25 CET 2007


Paul Rauch schrieb:
> Mathias Uebel schrieb:
>> Diez B. Roggisch schrieb:
>>> Tobias Bender schrieb:
>>>> Man könnte unerwünschte Zeichen mit re.sub einfach rauslöschen oder  
>>>> mit re.match testen und bei Bedarf eine exception werfen.
>>> Das ist gefaehrlicher Unfug!!! Dabei kann einem viel zu viel passieren.
>>>
>>> Stattdessen verwendet man die parametrisierte Form von cursor.execute, 
>>> etwa so:
>>>
>>> cursore.execute("select * from some_table where some_column = %s", 
>>> some_column_parameter)
>>>
>> Das ist bekannt.
>>
>> Aber eventuell hatte der Frager etwas anders im Sinn:
>> In PHP gibt es, um derlei Angriffe auszuschließen, eine gesonderte 
>> Funktion: mysql_escape_string
>>
>> Naja, schönes Wochenende an Alle.
>>
>> _______________________________________________
>> python-de maillist  -  python-de at python.net
>> http://python.net/mailman/listinfo/python-de
>>
> ja, sowas in der art meinte ich.
> 
> und mit whitelists werde ich nicht ohne weiteres fertig, wegem dem, was
> ich plane.
> das nutze ich für php. ich hätte gerne etwas mit gleicher funktion in
> python.
> 
>  //benötigt für make_safe
>  function strip_gpc_slashes ($input){
>   if ( !get_magic_quotes_gpc() || ( !is_string($input) &&
> !is_array($input) ) ){
>    return $input;
>   }
>   if ( is_string($input) ){
>    $output = stripslashes($input);
>   } elseif ( is_array($input) ) {
>    $output = array();
>    foreach ($input as $key => $val) {
>     $new_key = stripslashes($key);
>     $new_val = strip_gpc_slashes($val);
>     $output[$new_key] = $new_val;
>    }
>   }
>   return $output;
>  }
> // String ueberprufen und sicher machen fuer MySQL-Abfragen
>  function make_safe($variable) {
>   $variable = strip_gpc_slashes($variable);
>   $variable = addslashes(trim($variable));
>   return $variable;
>  }
>