Form e php, como proteger contra inserção de código?

dragao-azul

I fold therefore I AM
Boas,

A dúvida é a que está no assunto, tenho um form que me vai enviar para um ficheiro php os campos nome, email, assunto e texto (é para enviar uma mensagem).

Como faço para proteger todos estes campos para ter a certeza que não me conseguem correr códigos no servidor enviando-os pelos campos? (Há alguma função php que me filtre a variável antes de a usar?)

Para o email já achei na net como se confirma se é válido, falta os outros campos.

E já agora, o script irá enviar estes dados por mail, como faço para as " no mail não aparecerem \" (ou /", não me lembro como aparece)?

Thz

;)
 
Para o email já achei na net como se confirma se é válido, falta os outros campos.

Para filtrar conteúdo podes usar RegularExpressions.
Ao início é bastante confuso, passado algum tempo continua a ser confuso e espero que depois se torne aceitável, mas eu ainda estou na parte do confuso ;)

E já agora, o script irá enviar estes dados por mail, como faço para as " no mail não aparecerem \" (ou /", não me lembro como aparece)?

Não sei se há alguma função que faça isso, eu na altura estava com preguiça por isso resolvi assim:

PHP:
$text=str_replace('\"', """, $text);
$text=str_replace("\'", "'", $text);
 
PHP:
//eliminar as etiquetas HTML e PHP das cadeias de texto
$nome = strip_tags($_POST["nome"]);
$email = strip_tags($_POST["email"]);
$comentario = strip_tags($_POST["comentario"]);

Uso isso essa base.
 
Isso também tem problemas, se a mensagem tiver um "<" dai para a frente já não aparece nada...

Vou mesmo deixar desprotegido, penso que no modo como as variáveis são usadas não faça mal..

Thz

;)
 
O que podes fazer para tornar mais seguro é evitar que aparecam erros nas ligações à base de dados, e para isso apenas tens de adicionar o "@" antes de qualquer função (no caso das base de dados nas Queries). De resto basta passares a informação por $_POST e não terás problemas :)

Cumps
 
Última edição:
A informação vai por $_POST e nem vai ligar nada à base de dados vai mandar directamente para um mail com uma função mail().

Mas já agora o que faz o @? Não consegui achar na net, provavelmente por aselhice..
 
O "@" vai fazer que caso se dê algum erro numa função esse erro não seja mostrado. É uma simples medida de segurança, não custa nada usa-la para prevenir ;)

Cumps
 
Back
Topo