PHP Formulario de Validación
En este capítulo se explica cómo utilizar nuestros datos de formularios PHP presentados por la validación del cliente.
PHP Formulario de Validación
Al tratar de forma PHP debemos tener en cuenta la seguridad. En este capítulo le mostraremos la seguridad de datos procesamiento de formulario PHP, con el fin de evitar que los hackers y spam necesitamos para asegurar la validación de los datos del formulario. |
formulario HTML se describe en esta sección contiene los siguientes campos de entrada: se debe utilizar con los campos de texto opcionales, botones de radio, y los botones de envío:
Por encima de forma reglas de validación son los siguientes:
campo | Las reglas de validación |
---|---|
nombre | Must. + Contener sólo letras y espacios |
Must. + Debe ser una dirección válida de correo electrónico (incluyendo '@' y '.') | |
sitio | Must. Si está presente, debe contener una URL válida |
observación | Must. campo de entrada de varias líneas (campo de texto) |
género | Must. Debe seleccionar una |
En primer lugar, veamos el código de formulario HTML plano:
campo de texto
"Nombre", "E-mail" y el campo "URL" es un elemento de entrada de texto, el campo "notas" es un área de texto. código de HTML de la siguiente manera:
“名字”: <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>
botón de opción
campo "género" es un botón de opción, el código HTML se ve así:
性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男
Los elementos de formulario
código de formulario HTML de la siguiente manera:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Utilice estemétodo método = "post"formulario para enviar datos.
Lo que es $ _SERVER [ ""] PHP_SELF variables? $ _SERVER [ "PHP_SELF"] es una variable muy global, devuelve el nombre del archivo de script ejecutándose actualmente asociado a la raíz del documento. |
Por lo tanto, $ _SERVER [ "PHP_SELF"] enviará los datos del formulario de la página actual, en lugar de pasar a una página diferente.
¿Cuál es el método htmlspecialchars ()? htmlspecialchars () para algunos caracteres predefinidos en entidades HTML. Los personajes predefinidos son:
|
PHP forma necesaria para provocar la atención a donde?
$ _SERVER [ ""] PHP_SELF las variables podría ser utilizado por los hackers!
Cuando los hackers utilizando cross-site scripting enlace HTTP para atacar, $ _ SERVER [ "PHP_SELF"] variable se implanta en el script del servidor. La razón es que a través del sitio de archivo de secuencias de comandos ejecutable se une al camino detrás, por lo que $ _SERVER [ "PHP_SELF"] cadena contendrá enlaces HTTP detrás del código JavaScript.
XSS también conocido como CSS (escritura Cross-Site), cross-site scripting ataques. Un atacante malintencionado para insertar en la página web malicioso código html, cuando un usuario navega por la página, Web incorporado dentro del código HTML será ejecutado para lograr el propósito específico del usuario malicioso. |
Especificar el archivo siguiente formulario denominado "test_form.php":
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Ahora, utilizamos la dirección URL para enviar la dirección "test_form.php" especificada, como se muestra en el código anterior se modifica de la siguiente manera:
<form method="post" action="test_form.php">
Si lo hace, bueno.
Sin embargo, teniendo en cuenta que el usuario introduzca la siguiente dirección en la barra de direcciones del navegador:
http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
La dirección de arriba, será interpretado como el siguiente código y ejecutarlo:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Añadir un código de etiqueta de script y añadir comandos de alerta. Cuando se carga la página se ejecutará el código Javascript (el usuario verá una ventana emergente). Esto es sólo un ejemplo sencillo para ilustrar la variable PHP_SELF será utilizada por los piratas informáticos.
Tenga en cuenta que cualquier código JavaScript se puede añadir a la etiqueta <script>! Los hackers pueden utilizar esta página para redirigir a un servidor en otra página, el archivo de la página de códigos para proteger el código malicioso, el código puede ser modificado para obtener las variables globales o los datos del formulario de usuario.
¿Cómo evitar el $ _SERVER [ "PHP_SELF"] ser explotados?
$ _SERVER [ "PHP_SELF"] por htmlspecialchars () para evitar ser explotados.
formar código como sigue:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars () para algunos caracteres predefinidos en entidades HTML. Ahora bien, si el usuario quiere utilizar variables PHP_SELF, los resultados son de salida como sigue:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
El intento fracasó vulnerabilidad!
la validación de los datos del formulario Uso de PHP
En primer lugar hemos presentado datos a la función de usuario () se procesa a través de htmlspecialchars PHP.
Cuando usamos los htmlspecialchars () función, el usuario intenta enviar los siguientes campos de texto:
<script>location.href('http://www.w3big.com')</script>
El código no se ejecutará, ya que se guardará como código de escape HTML de la siguiente manera:
<script>location.href('http://www.w3big.com')</script>
El código de seguridad es seguro y puede ser exhibido o insertar el mensaje en la página.
Cuando el usuario envía el formulario, vamos a hacer las dos cosas siguientes:
- Uso de PHP función trim () para eliminar los datos de entrada del usuario personajes innecesarios (como: espacio, tabulación, nueva línea).
- Utilice stripslashes PHP () para quitar la barra invertida datos de entrada del usuario (\)
Deja que estas funciones de filtrado escritos en una función de nuestra propia definición, esto puede mejorar en gran medida la reutilización de código.
La función denominada test_input ().
Ahora, podemos test_input () para detectar todas las variables en $ _POST, código de script es el siguiente:
Ejemplos
// 定义变量并默认设置为空值
$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;
}
?>
Instancia en ejecución »
Tenga en cuenta que cuando se ejecuta el script de arriba, por $ _SERVER [ "REQUEST_METHOD"] para detectar si se envía el formulario. Si REQUEST_METHOD es POST, el formulario se haya presentado - Se verificarán los datos. Si el formulario no se presenta, se saltará la verificación y muestra un espacio en blanco.
Utilice los elementos de entrada en los ejemplos anteriores son opcionales, incluso si el usuario no introduce ningún dato se puede mostrar correctamente.
En la siguiente sección describiremos cómo validar los datos introducidos por el usuario.