Foros del Web » Programando para Internet » PHP »

Vulnerabilidad en función mail() de php

Estas en el tema de Vulnerabilidad en función mail() de php en el foro de PHP en Foros del Web. Buen día. Mi provedor de hosting sugiere que añadamos una función cada que vayamos a usar la función mail() de php: Vulnerabilidad de la función ...
  #1 (permalink)  
Antiguo 19/11/2010, 11:33
Avatar de hey_alan  
Fecha de Ingreso: diciembre-2006
Ubicación: México
Mensajes: 348
Antigüedad: 17 años, 3 meses
Puntos: 8
Vulnerabilidad en función mail() de php

Buen día.

Mi provedor de hosting sugiere que añadamos una función cada que vayamos a usar la función mail() de php:

Vulnerabilidad de la función mail de php

Entonces, uso el siguiente código:

Código PHP:
Ver original
  1. if (isset($_POST["mensaje"])){
  2.  
  3.  
  4. function ValidarDatos($campo){
  5. //Array con las posibles cabeceras a utilizar por un spammer
  6. $badHeads = array("Content-Type:",
  7. "MIME-Version:",
  8. "Content-Transfer-Encoding:",
  9. "Return-path:",
  10. "Subject:",
  11. "From:",
  12. "Envelope-to:",
  13. "To:",
  14. "bcc:",
  15. "cc:");
  16. foreach($badHeads as $valor){
  17. if(strpos(strtolower($campo), strtolower($valor)) !== false){
  18. echo '<p style="text-align:center;">Se ha introducido una cadena que contiene cabeceras php sospechosas:</p>';
  19. echo '<div style="background:#000; margin:10px 40px; color:#eee; padding:5px; border:#553355 1px solid; font-family:Courier New, Courier, monospace;">';
  20. echo htmlspecialchars($_POST["mensaje"]);
  21. echo '</div>';
  22. echo '<p style="text-align:center;">Favor de revisar nuevamente o intentar manualmente. Gracias.</p>';
  23. }
  24. }
  25. }
  26.  
  27.  
  28. echo '<div style="text-align:center;">';
  29.  
  30. $nombre = $_POST["nombre"];
  31. $email = $_POST["email"];
  32. $telefono = $_POST["telefono"];
  33. $mensaje = $_POST["mensaje"];
  34.  
  35. if (!(empty($email))) {
  36. if (!(empty($mensaje))) {
  37.  
  38.  
  39. ValidarDatos($nombre);
  40. ValidarDatos($email);
  41. ValidarDatos($telefono);
  42. ValidarDatos($mensaje);
  43.  
  44. $nombre = htmlspecialchars($nombre);
  45. $email = htmlspecialchars($email);
  46. $telefono = htmlspecialchars($telefono);
  47. $mensaje = htmlspecialchars($mensaje);
  48.  
  49.  
  50. $header = 'From: [email protected]' . "\r\n".'Reply-To:' .$email. "\r\n" .'X-Mailer: PHP/' . phpversion();
  51.  
  52.  
  53. $body = 'Nombre: '.$nombre."\r\n\r\n".'Telefono: '.$telefono."\r\n\r\n".'Email: '.$email."\r\n\r\n\r\n\r\n".'Mensaje: '."\r\n\r\n".$mensaje;
  54.  
  55. if (mail('[email protected]','Mensaje de Alan Marth Media', $body,$header)){
  56.  
  57. echo '<p>Su mensaje se ha enviado correctamente.</p><p class="txt-bld">En breve nos comunicaremos con usted.</p>';
  58.  
  59. }else{
  60.  
  61. echo '<p>Ocurrió un error durante el envío. Trate manualmente:</p><p class="txt-bld">[email protected]</p><p>Disculpe las molestias.</p>';
  62.  
  63. }
  64.  
  65. }else{echo '<p class="txt-bld">Inserte un mensaje. Gracias.</p><p><a href="contacto.php">Reintentar</a>.</p>'; }
  66. }else{echo '<p class="txt-bld">Inserte una dirección email válida. Gracias.</p><p><a href="contacto.php">Reintentar</a>.</p>';}
  67.  
  68. echo '</div>';
  69.  
  70. }else{

El problema es que algunos me cuentan que me han querido escribir un mensaje y se los regresa. Y vale... que las palabras prohibidas como "From:" "To:" o "Subject:" pueden ser utilizadas en un mensaje común.

Mi pregunta es... ¿es realmente necesario? ¿cuál pudiera ser una alternativa?

Muchas gracias por su tiempo. Saludos.
__________________
Alan Marth Media

Diseño web y Publicidad en Morelia, Michoacán

Etiquetas: mail, vulnerabilidad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:42.