Latest web development tutorials
×

PHP corso

PHP corso PHP breve introduzione PHP installare PHP grammatica PHP variabile PHP echo/print PHP Tipi di dati PHP costante PHP stringa PHP operatori PHP If...Else PHP Switch PHP schieramento PHP Ordinamento di un array PHP superglobals PHP While circolazione PHP For circolazione PHP funzione PHP Variabili magici PHP Namespace PHP Object-Oriented

PHP modulo

PHP modulo PHP Forms Authentication PHP modulo - I campi obbligatori PHP modulo - e-mail di verifica e l'URL PHP esempio forma completa PHP $_GET variabile PHP $_POST variabile

PHP Tutorial avanzato

PHP array multidimensionali PHP data PHP contenere PHP file PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sicurezza E-mail PHP Error PHP Exception PHP filtro PHP Filtro avanzato PHP JSON

PHP 7 nuove funzionalità

PHP 7 nuove funzionalità

PHP Database

PHP MySQL breve introduzione PHP MySQL collegamento PHP MySQL Creazione di un database PHP MySQL Creare una tabella di dati PHP MySQL inserire i dati PHP MySQL Inserire più dati PHP MySQL prepared statement PHP MySQL leggere i dati PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX breve introduzione AJAX PHP AJAX Database AJAX XML AJAX ricerca in tempo reale AJAX RSS Reader AJAX voto

PHP Manuale di riferimento

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Elaborazione immagini PHP RESTful

PHP Form Validation

Questo capitolo spiega come utilizzare i nostri dati del modulo PHP presentati dalla convalida del client.


PHP Form Validation

nota Nel trattare con modulo PHP dobbiamo considerare la sicurezza.

In questo capitolo vi mostreremo PHP Form Processing sicurezza dei dati, al fine di impedire agli hacker e spam abbiamo bisogno di garantire la convalida dati del modulo.

modulo HTML descritta in questa sezione contiene i seguenti campi di immissione: deve essere utilizzato con i campi di testo opzionali, pulsanti di opzione, e pulsanti di conferma:

Visualizza codice >>

Sopra forma regole di convalida sono le seguenti:

campo regole di convalida
nome Must. + Contenere solo lettere e spazi
E-mail Must. + Deve essere un indirizzo email valido (tra cui '@' e '.')
luogo Must. Se presente, esso deve contenere un URL valido
osservazione Must. campo di input multi-line (campo di testo)
genere Must. È necessario selezionare un

In primo luogo, guardiamo il codice del modulo HTML semplice:


campo di testo

campo "URL" "Nome", "E-mail", ed è un elemento di input di testo, il campo "note" è una textarea. codice HTML come segue:

“名字”: <input type="text" name="name">
E-mail: <input type="text" name="email">
网址: <input type="text" name="website">
备注: <textarea name="comment" rows="5" cols="40"></textarea>

pulsante Radio

campo "di genere" è un pulsante di scelta, il codice HTML simile a questo:

性别:
<input type="radio" name="gender" value="female">女
<input type="radio" name="gender" value="male">男

elementi del modulo

codice del modulo HTML come segue:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Utilizzare questometodo = metodo "post"modulo per inviare i dati.

nota Ciò che è $ _SERVER [ ""] PHP_SELF variabili?

$ _SERVER [ "PHP_SELF"] è una variabile super-globale, restituisce il nome del file script in esecuzione associati con la radice del documento.

Quindi, $ _SERVER [ "PHP_SELF"] invierà i dati del modulo alla pagina corrente, invece di saltare ad una pagina diversa.

nota Qual è il metodo htmlspecialchars ()?

htmlspecialchars () per alcuni caratteri predefiniti in entità HTML.

I caratteri predefiniti sono:

  • & (E commerciale) diventa & amp;
  • "(Doppio apice) diventa & quot;
  • '(Singolo apice) diventa & # 039;
  • <(Minore di) diventa & lt;
  • > (Maggiore di) diventa & gt;


modulo PHP necessaria per provocare l'attenzione a dove?

$ _SERVER [ ""] PHP_SELF variabili potrebbe essere utilizzato dagli hacker!

Quando gli hacker utilizzano cross-site scripting collegamento HTTP per attaccare, $ _ SERVER variabile [ "PHP_SELF"] sarà impiantato nello script del server. La ragione è che il file di script eseguibile cross-site è attaccato al sentiero dietro, in modo da $ _SERVER [ "PHP_SELF"] stringa conterrà link HTTP dietro il codice JavaScript.

nota XSS anche conosciuto come CSS (Script Cross-Site), attacchi cross-site scripting. Un malintenzionato di inserire la pagina Web dannoso in codice HTML, quando un utente naviga nella pagina, Web incorporato all'interno del codice html verrà eseguito per raggiungere scopo specifico dell'utente malintenzionato.

Specificare il file seguente form denominato "test_form.php":

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

Ora, usiamo l'URL per inviare l'indirizzo "test_form.php" specificata, come mostrato nel codice qui sopra è modificato come segue:

<form method="post" action="test_form.php">

Facendo così buono.

Tuttavia, tenendo conto che l'utente digitare il seguente indirizzo nella barra degli indirizzi del browser:

http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

Quanto sopra URL, viene interpretato come il seguente codice ed eseguirlo:

<form method="post" action="test_form.php/"><script>alert('hacked')</script>

Aggiungere un codice tag script e aggiungere il comando di allarme. Quando la pagina viene caricata eseguirà il codice Javascript (l'utente vedrà una finestra pop-up). Questo è solo un semplice esempio per illustrare variabile PHP_SELF verrà utilizzato dagli hacker.

Si prega di notare che qualsiasi codice JavaScript può essere aggiunto al tag <script>! Gli hacker possono utilizzare questa pagina per reindirizzare a un server in un'altra pagina, il file di codice della pagina per proteggere codice dannoso, il codice può essere modificato per ottenere l'utente di variabili globali o dati del modulo.


Come evitare il $ _SERVER [ "PHP_SELF"] essere sfruttati?

$ _SERVER [ "PHP_SELF"] da htmlspecialchars () per evitare di essere sfruttati.

formare codice come segue:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars () per alcuni caratteri predefiniti in entità HTML. Ora, se l'utente vuole utilizzare variabili PHP_SELF, i risultati vengono emessi come segue:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Il tentativo di vulnerabilità non è riuscito!


Utilizzare PHP convalida i dati del modulo

Prima di tutto abbiamo presentato i dati alla funzione utente () viene elaborata attraverso htmlspecialchars di PHP.

Quando usiamo i htmlspecialchars () la funzione, l'utente tenta di presentare i seguenti campi di testo:

<script>location.href('http://www.w3big.com')</script>

Non verrà eseguito il codice, perché sarà salvato come codice di escape HTML come segue:

&lt;script&gt;location.href('http://www.w3big.com')&lt;/script&gt;

Il codice di cui sopra è sicuro e può essere visualizzato o inserire il messaggio nella pagina.

Quando l'utente invia il modulo, faremo le seguenti due cose:

  1. Utilizzare PHP assetto function () per rimuovere i dati inseriti dall'utente caratteri inutili (come ad esempio: spazio, tabulazione, nuova riga).
  2. Utilizzare stripslashes PHP () per rimuovere la barra rovesciata dati di input dell'utente (\)

Lasciate che queste funzioni di filtraggio scritte in funzione della nostra definizione, questo può migliorare notevolmente la riusabilità del codice.

La funzione denominata test_input ().

Ora, siamo in grado di test_input function () per rilevare tutte le variabili in $ _POST, codice di script è il seguente:

Esempi

<?php
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

esempio »Esecuzione

Si noti che quando eseguiamo lo script precedente, da $ _SERVER [ "REQUEST_METHOD"] per rilevare se il modulo viene inviato. Se REQUEST_METHOD è POST, il modulo sarà presentato - i dati saranno verificati. Se il modulo non viene inviato salterà la verifica e visualizza uno spazio vuoto.

Utilizzare gli elementi di ingresso negli esempi di cui sopra sono opzionali, anche se l'utente non entra alcun dato può essere visualizzato correttamente.

Nel prossimo paragrafo descriveremo come convalidare i dati inseriti dall'utente.