Felix Riesterer: Kontext-gerechtes Verarbeiten von user-submitted data

Beitrag lesen

Lieber Anfänger,

if (isset($array)) {

$sender2=$array["sender2"];
$uhrzeit=$array["uhrzeit"];
$titel=$array["titel"];
}

  
das Umkopieren von Werten ist eine Verschleierung, die nicht sinnvoll ist. Wenn Du user-submitted data hast (und das sind die Werte in $\_GET, $\_POST, $\_COOKIE usw.), dann muss in Deinem Script immer klar sein, dass es sich eben um potentiell gefährliche Werte handelt. Das Umkopieren in andere Variablen verschleiert die Herkunft und die Gefährlichkeit der Daten. Daher: NO GO!  
  

> `mysql_query("INSERT tv (sender2, uhrzeit, titel) VALUES ('$sender2', '$uhrzeit', '$titel')");`{:.language-php}  
  
Spätestens hier ist nicht mehr ersichtlich, dass $sender2 in Wirklichkeit eine unbehandelte Usereingabe ist, die potentiell Deine Datenbank kapern kann (Stichwort "SQL injection" - Google danach und mache Dich schlau!). Daher ist Deine Verschleierung sehr sehr gefährlich.  
  

> ~~~php
  

> $get_safe = $_GET;  
> $post_safe = $_POST;  
> $cookie_safe = $_COOKIE;  
> if (!get_magic_quotes_gpc()) {  
>     // Rückwärtsstriche in Browservariablen einfügen  
>     foreach ($_GET as $key => $value) {  
>         $get_safe[$key] = addslashes($value);  
>     }  
>     foreach ($_POST as $key => $value) {  
>         $post_safe[$key] = addslashes($value);  
>     }  
>     foreach ($_COOKIE as $key => $value) {  
>         $cookie_safe[$key] = addslashes($value);  
>     }  
> }  
> 

In PHP gibt es (noch, in PHP6 wird es nicht mehr existieren) die "magic quotes"-Geschichte, die einfache und doppelte Anführungszeichen mit Backslashes unschädlich zu machen sucht, damit eben SQL-Injektionen nicht greifen. In Deinem Code-Beispiel wird aber genau diese "Sicherheitsmaßnahme" wieder ausgehebelt, indem die Originaleingaben des Users wieder hergestellt werden. Und schon wieder wird verschleiert: $get_safe suggeriert, dass die Werte nun "sicher" sind, dabei sind sie ja gerade _ent-_sichert worden!

Was Du benötigst, ist der Artikel über Kontext-gerechtes Enkodieren von Daten.

Um Deinen Thread-Titel zu konkretisieren: Dein Problem liegt nicht in den Formularen, sondern in der serverseitigen Verarbeitung der abgeschickten Daten.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)