Bel progetto:)
Inoltre aggiungo, ogni cosa dovrà essere filtrata con una while list.
La variabili da fonte esterne, non sempre sono come il programmatore le pensa. È buona norma inizializzare le variabili da involucro nel tipo scelto dal programmatore. register_globals deprecated php 5.3 e Magic Quotes deprecated php 5.3.
le variabili esterne nel mio script possono essere di tipo stringa? Se si
Codice PHP:
//sintassi multi creazione variabile
$key = $var1 = $var2 = '';
if(isset($_POST['key']) && is_string($_POST['key']) && strlen(($key = str_replace(chr(0), '', $_POST['key'])))) {
echo 'valido'; //solo se la stringa è maggiore 0 BYTE
} else {
echo 'non valido'; // se il contesto è di sicurezza,
// puoi anche non far capire al tuo attaccante
//che la tua applicazione lo valuta come errore.. non producendo output con messaggi di errore.
}
Ecco spiegati Varisbles External e null bytes le funzioni del manuale di php con la dicitura binary safe, non hanno problemi con il null bytes.
Ecco il motivo di while list (tipo esplicitamente voluto, e anche valore tra determinati caratteri). Poi ci sarebbe il discorso di aggiungere un header mysql e funzioni e anche se accettare solo url con caratteri equivalenti a US ASCII
Contesto speciale variabile esterna HTTP_HOST, il cliente potrebbe anche inviare la porta che per http il default è 80 o 443 in https, che non dovrà essere espressa.
Quindi nel contesto di sicurezza il codice potrebbe presentarsi in questo modo
Codice PHP:
//sintassi multi creazione variabile
$key = $var1 = $var2 = $error '';
if!((isset($_POST['key']) && is_string($_POST['key']) && strlen(($key = str_replace(chr(0), '', $_POST['key'])))))
$error = 'user attack first variable'; // altrimenti l'espressione di $key è vera per definizione