[Php-it] SQL Inject [Esteso...]
Gianluca Baù
gianluca at ihuri.it
Fri Dec 29 11:48:38 CET 2006
> Luca 'Ziabice' Gambetta ha scritto:
>
>>>Emiliano Gabrielli (aka AlberT) ha scritto:
>>>
>>>
>>>>> (ad esempio un intero) e se non contienre caratteri non
>>>>>consentiti
>>>>>
>>>>>
>>>>questo è un approccio a Black List ... intrinsecamente fallace...
>>>>
>>>>
>>>>
>>>Perche' fallace ?
>>>
>>>M.
>>>
>>>
>>>
>>
>>Perché è meglio dire cosa debba entrare chiaro e tondo, che cosa non
>>debba entrare,
>>
>
> Ok, anche perche' io faccio la stessa cosa :) Solo che l'ho detta al
> contrario :) Che deficiente... [controllo che un dato passato come
> tipo numero contenga solo 0-9 (ad esempio) e non che NON contenga
> caratteri.]
>
> C'e' una vecchia email passata in ML che contiene un po' di regex. Non
> mi ricordo di chi, ma io uso una cosa simile. Se non identica.
Ma una volta che l'input è sbagliato che fate?
Questo è un discorso generale che mi piacerebbe affrontare.
Io solitamente uso questa logica:
File Form
|
|
File di azione (visibile nell'action="...")
|
|
Errore
<code>
if ( empty($_POST['nome']) )
$errore = "0x001";
</code>
|
|
Back to File Form tramite header("Location: ") con in get un codice di
errore
<code>
header ("Location: http://url_to_file_form?errore=" . $errore);
exit();
</code>
Nel file form è presente un array con i vari codici di errore (es: 00x1,
00x2) e le relative stringhe che vengono stampate
<code>
$array_errori (
"0x001" => "Specificare il nome",
"0x002" => "Specificare il cognome"
);
if ( array_key_exists($_GET['errore'], $array_errori) )
echo $array_errori[$_GET['errore']];
else
die("What are you doing?");
</code>
Questo ovviamente non nel caso ajax :)
Che ne pensate? Secondo me è semplice, efficace... un po' anche sicuro
ma nn mi lascia del tutto soddisfatto.
Saluti
Gianluca
More information about the Php-it
mailing list