PHP validação de formulário
Este capítulo explica como usar os nossos dados de formulário PHP apresentados pela validação do cliente.
PHP validação de formulário
Em se tratando de forma PHP é preciso considerar a segurança. Neste capítulo, vamos mostrar-lhe PHP Formulário de Processamento de segurança de dados, a fim de impedir que hackers e spam que precisamos para garantir a validação de dados do formulário. |
formulário HTML descrito nesta seção contém os seguintes campos de entrada: deve ser usado com os campos de texto opcionais, botões de rádio e botões de apresentar:
Acima forma as regras de validação são os seguintes:
campo | As regras de validação |
---|---|
nome | Obrigação. + Conter apenas letras e espaços |
Obrigação. + Deve ser um endereço de e-mail válido (incluindo '@' e '.') | |
local | Obrigação. Se estiver presente, ele deve conter uma URL válida |
observação | Obrigação. campo de entrada multi-linha (campo de texto) |
sexo | Obrigação. Você deve selecionar um |
Primeiro, vamos olhar para o código de formulário HTML simples:
campo de texto
"Nome", "E-mail", e no campo "URL" é um elemento de entrada de texto, o campo "notas" é uma textarea. código HTML da seguinte forma:
“名字”: <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ão de rádio
campo "Sexo" é um botão de opção, o código HTML se parece com isso:
性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男
elementos de formulário
HTML código do formulário da seguinte forma:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Utilize estemétodo = método "post"formulário para enviar dados.
O que é $ _SERVER [ "PHP_SELF"] variáveis? $ _SERVER [ "PHP_SELF"] é uma variável super global, retorna o nome do arquivo script atualmente em execução associado com a raiz do documento. |
Assim, $ _SERVER [ "PHP_SELF"] irá enviar os dados do formulário para a página atual, em vez de saltar para uma página diferente.
O que é htmlspecialchars () método? htmlspecialchars () para alguns personagens pré-definidos em entidades HTML. Os personagens pré-definidos são:
|
formulário de PHP necessária para provocar a atenção para onde?
$ _SERVER [ "PHP_SELF"] variáveis poderia ser usada por hackers!
Quando os hackers usando cross-site scripting ligação HTTP para o ataque, $ _ SERVER [ "PHP_SELF"] variável será implantado no script de servidor. A razão é que arquivo de scripting executável cross-site está ligado ao caminho atrás, por isso, $ _SERVER [ "PHP_SELF"] string conterá links HTTP por trás do código JavaScript.
XSS também conhecido como CSS (Script Cross-Site), ataques cross-site scripting. Um atacante malicioso para inserir página Web maliciosa no código html, quando um usuário visitar a página, Web incorporado dentro do código html será executado para alcançar o propósito específico do usuário mal-intencionado. |
Especifique o seguinte arquivo de formulário chamado "test_form.php":
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Agora, usamos a URL para enviar o endereço "test_form.php" especificada, conforme mostrado no código acima é modificado como segue:
<form method="post" action="test_form.php">
Ao fazê-lo bem.
No entanto, tendo em conta o usuário digite o seguinte endereço na barra de endereço do navegador:
http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
O URL acima, será interpretado como o seguinte código e executá-lo:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Adicionar um código de tag script e adicionar comando alerta. Quando a página é carregada irá executar o código Javascript (o usuário verá uma janela pop-up). Este é apenas um exemplo simples para ilustrar PHP_SELF variável será usada por hackers.
Por favor, note que qualquer código JavaScript pode ser adicionado à tag <script>! Os hackers podem usar essa página para redirecionar para um servidor em outra página, o arquivo página de código para proteger o código malicioso, o código pode ser modificado para obter o variáveis globais ou dados de formulário do usuário.
Como evitar o $ _SERVER [ "PHP_SELF"] sendo explorada?
$ _SERVER [ "PHP_SELF"] por htmlspecialchars () para evitar ser explorado.
formar código da seguinte forma:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars () para alguns personagens pré-definidos em entidades HTML. Agora, se o usuário quiser usar variáveis PHP_SELF, os resultados são de saída da seguinte forma:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
A tentativa de vulnerabilidade falhou!
validação de dados de formulário Use PHP
Primeiro de tudo, apresentaram dados para a função de usuário () é processado através htmlspecialchars do PHP.
Quando usamos os htmlspecialchars () função, o usuário tenta apresentar os seguintes campos de texto:
<script>location.href('http://www.w3big.com')</script>
O código não será executado, porque ele vai ser guardado como código de escape HTML da seguinte forma:
<script>location.href('http://www.w3big.com')</script>
O código acima é seguro e pode ser exibida ou inserir a mensagem na página.
Quando o usuário envia o formulário, vamos fazer as duas coisas seguintes:
- Use PHP aparar function () para remover os dados de entrada do usuário caracteres desnecessários (tais como: espaço, tabulação, nova linha).
- Use stripslashes PHP () função para remover a barra invertida de dados de entrada do usuário (\)
Deixe estas funções de filtragem escritos em função da nossa própria definição, isso pode aumentar consideravelmente a reutilização de código.
A função chamada test_input ().
Agora, podemos test_input function () para detectar todas as variáveis em $ _POST, código de script é a seguinte:
Exemplos
// 定义变量并默认设置为空值
$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;
}
?>
Correndo instância »
Note-se que quando executamos o script acima, em US $ _SERVER [ "REQUEST_METHOD"] para detectar se o formulário é enviado. Se REQUEST_METHOD é POST, o formulário será enviado - os dados serão verificados. Se o formulário não for apresentado irá ignorar a verificação e exibe um em branco.
Use os itens de entrada nos exemplos acima são opcionais, mesmo que o utilizador não introduzir quaisquer dados podem ser exibidos corretamente.
Na próxima seção, vamos descrever como para validar os dados inseridos pelo usuário.