1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Web Development' iniciada por dragao-azul, 24 de Abril de 2009. (Respostas: 11; Visualizações: 2209)

  1. dragao-azul

    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

    ;)
     
  2. dragao-azul

    dragao-azul I fold therefore I AM

  3. OldMan

    OldMan Power Member

    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 ;)

    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);
     
  4. dragao-azul

    dragao-azul I fold therefore I AM

    Tanto esta opção como a minha não funcionam... O mail fica desconfigurado, tava na esperança que reconhecesse o html mas não. Também não quero usar nada de complicado..

    Se calhar deixo os campo sem protecção... Nada vai ser inserido em bases de dados nem passa por variáveis $_GET, apenas $_POST, não deve haver problema...

    Thz anyway.

    ;)
     
  5. mazinhu

    mazinhu Power Member

    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.
     
  6. dragao-azul

    dragao-azul I fold therefore I AM

    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

    ;)
     
  7. skullrazor

    skullrazor [email protected] Member

    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: 27 de Abril de 2009
  8. dragao-azul

    dragao-azul I fold therefore I AM

    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..
     
  9. skullrazor

    skullrazor [email protected] Member

    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
     

Partilhar esta Página