elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Duda con un script de envio en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con un script de envio en PHP  (Leído 1,890 veces)
jcroot

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Duda con un script de envio en PHP
« en: 3 Abril 2007, 21:09 »

Hola!

En primer lugar gracias que ElHacker.Net volvió! Ya se le extrañaba.

Amigos vengo con una duda, trate de hacerlo solo pero no pude, tengo una duda sobre un script en PHP que encontré en la Internet el cual se encarga de enviar los datos de un formulario al e-mail.

Este es el script original:

Código:
<?php

// aki tu e-mail

$recipiente = "fulanito@dominio.com";


// URL o enlace a la pagina hogar

$home = "http://google.com";


// mensaje k te llegara al email con los datos

$msg = "Hola $nombre

$nombre, envia el formulario de contacto con los siguientes datos:\n

Nombre: $nombre
E-mail: $email
Pagina de internet: $web 

Asunto: $asunto

Mensaje del visitante:

$mensaje\n\n";

// Comprobamos que los campos del formulario se encuentren completos.

if (empty($nombre)||empty($email)||empty($asunto)||empty($mensaje)){
echo 'No llenaste las casillas';

} else{

// Enviamos el formulario con todos los datos.

mail("$recipiente", "$asunto", "$msg", "From: $nombre");

//Damos las gracias al visitante por contactarnos.

echo"<font face=tahoma size=2>
<p align=center>Gracias <b>$nombre</b>. 
<p align=center>Respondere a su mensaje en un plazo de 12 horas.<br><br>
<br>
<p align=center><br>
<strong><a href=$home>Regresar al inicio</strong></a>.</p>";
}
?>

El problema con este script es que no evita los ataques anti flood, ya que le pase la dirección de mi formulario de contacto a un amigo y me envio 200 emails en 1 hora por medio del mismo.

Buscando en la Internet encontré esta web:

http://www.webcheatsheet.com/php/create_captcha_protection.php

La cual explica muy bien como agregar un código de verificación a cualquier formulario para evitar los Floods pero no lo entendí muy bien. Si quieres visiten esa web para que lo entiendan
mejor, el caso es que tengo los siguientes archivos:

Contacto.html  - este es mi formulario de contacto en HTML

Enviado.php - este es el script que les puse anteriormente,  el cual envía los datos al email

Create_image.php  –   este se encarga de crear la imagen en PHP (el código de confirmación).

ajax_captcha.js  -  un código en java script que tiene que ver con create_image.php, este archivo lo tengo que incluir en mi formulario de contacto con un: 

Código:
<script language="javascript" type="text/javascript" src="ajax_captcha.js"></script>

Vamos bien… Los ejemplos de la web me dio otro archivo llamado: captcha.php el cual verifica que campo del formulario (el campo del código de verificación) no este vacio y que corresponda con la imagen que se guardo para poder enviarse.
Capcha.php contiene el siguiente código:

Código:
<?


//Continue the session
session_start();

//Make sure that the input come from a posted form. Otherwise quit immediately
if ($_SERVER["REQUEST_METHOD"] <> "POST")
 die("You can only reach this page by posting from the html form");

//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
    (!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
  echo "<h1>Test successful!</h1>";
} else {
  echo "<h1>Test failed! Try again!</h1>";
}
?>

Ahora, yo pensé que podía agregarle el contenido de captcha.php a mi archivo con el script enviado.php pero algo salió mal… no puedo hacer funcionar el script enviado.php si agrego el otro (captcha.php)

Esto es lo que tengo en enviado.php hasta el momento:

Citar
<?php

//Continue the session
session_start();

//Make sure that the input come from a posted form. Otherwise quit immediately
if ($_SERVER["REQUEST_METHOD"] <> "POST")
 die("You can only reach this page by posting from the html form");


// aki tu e-mail

$recipiente = "fulanito@dominio.com";


// URL o enlace a la pagina hogar

$home = "http://google.com";


// mensaje k te llegara al email con los datos

$msg = "Hola $nombre

$nombre, envia el formulario de contacto con los siguientes datos:\n

Nombre: $nombre
E-mail: $email
Pagina de internet: $web 

Asunto: $asunto

Mensaje del visitante:

$mensaje\n\n";

// Comprobamos que los campos del formulario se encuentren completos.

if (empty($nombre)||empty($email)||empty($asunto)||empty($mensaje)){
echo 'No llenaste las casillas';

} else{

//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
    (!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
  echo "<h1>Test successful!</h1>";
} else {
  echo "<h1>Test failed! Try again!</h1>";
}


// Enviamos el formulario con todos los datos.

mail("$recipiente", "$asunto", "$msg", "From: $nombre");

//Damos las gracias al visitante por contactarnos.

echo"<font face=tahoma size=2>
<p align=center>Gracias <b>$nombre</b>. 
<p align=center>Su mensaje fue enviado con <b>&#38;#161;exito!...</b>
<p align=center>Respondere a su mensaje en un plazo de 12 horas.<br><br>
<br>
<p align=center><br>
<strong><a href=$home>Regresar al inicio</strong></a>.</p>";
}
?>

Nota:

Lo que esta en negrita del codigo citado es lo que le agregue al script original, pero no funciona... Creo que el problema es con esta parte:

Citar
//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
    (!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
  echo "<h1>Test successful!</h1>";
} else {
  echo "<h1>Test failed! Try again!</h1>";
}


« Última modificación: 3 Abril 2007, 21:30 por jcroot » En línea

jcroot

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: Duda con un script de envio en PHP
« Respuesta #1 en: 3 Abril 2007, 22:50 »

Alguien?   :-(


En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Colaborador
***
Desconectado Desconectado

Mensajes: 5.111


Ver Perfil WWW
Re: Duda con un script de envio en PHP
« Respuesta #2 en: 4 Abril 2007, 01:50 »

Creo que tiene errores el captcha, te paso uno que hizo un amigo  ;)

En tu formulario agrega:
Código:
<?php
session_start();
$captcha_texto = "";
for ($i = 1; $i <= 6; $i++) {
$captcha_texto .= caracter_aleatorio();
}
$HTTP_SESSION_VARS["captcha_texto_session"] = $captcha_texto;
function caracter_aleatorio() {
mt_srand((double)microtime()*1000000);
$valor_aleatorio = mt_rand(1,3);
switch ($valor_aleatorio) {
case 1:
$valor_aleatorio = mt_rand(97, 122);
break;
case 2:
$valor_aleatorio = mt_rand(48, 57);
break;
case 3:
$valor_aleatorio = mt_rand(65, 90);
break;
}
return chr($valor_aleatorio);
}
?>

Y llamas a la imagen: <img src="crear_imagen.php?<?php echo SID;?>">

En donde procesas el formulario:
Código:
<?php
session_start();
$texto_ingresado = $HTTP_POST_VARS["texto_ingresado"];
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_session"];

if ($captcha_x == $captcha_texto) {
//si lo puso bien

$destinatario = "xxxxxxxx@gmail.com"; // Quien recibirá los corroes
$asunto = "Mensaje de la pagina PurasPruebeas: ".$asunto; // tema del correo

// Este es el Cuerpo, el contexto del mensaje, la esencia del correo, el todo :)
$cuerpo ="El sr(a) $nombre dice: <br><br> \"$mensaje\", su email es: $email.<br> para dominio: $dominio";


$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
// Este es para decir, de donde viene
$headers .= "From: ".$nombre." <".$email.">\r\n";

// aqui entra el trabajo del mail()
mail($destinatario,$asunto,$cuerpo,$headers) ;

header('Location: contacto.php?envio=si');


}
else{
//si lo puso mal
header('Location:  contacto.php?envio=no&error=captcha');
exit();
}
session_unset();
session_destroy();

En crear_imagen.php
Código:
<?php
//creamos la imagen definiendo el tamaño del alto y el ancho (150, 40)
$captcha_imagen = imagecreate(150,40);
//creamos el color negro para el fondo y blanco para los caracteres
$color_negro = imagecolorallocate ($captcha_imagen, 0, 80, 85);
$color_blanco = imagecolorallocate ($captcha_imagen, 255, 255, 255);
//pintamos el fondo con el cplor negro creado anteriormente
imagefill($captcha_imagen, 0, 0, $color_negro);
//iniciamos la session para obtener los caracteres a dibujar
session_start();
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_session"];
//dibujamos los caracteres de color blanco
imagechar($captcha_imagen, 4, 20, 13, $captcha_texto[0] ,$color_blanco);
imagechar($captcha_imagen, 5, 40, 13, $captcha_texto[1] ,$color_blanco);
imagechar($captcha_imagen, 3, 60, 13, $captcha_texto[2] ,$color_blanco);
imagechar($captcha_imagen, 4, 80, 13, $captcha_texto[3] ,$color_blanco);
imagechar($captcha_imagen, 5, 100, 13, $captcha_texto[4] ,$color_blanco);
imagechar($captcha_imagen, 3, 120, 13, $captcha_texto[5] ,$color_blanco);
$rand1=rand(0,50);
$rand2=rand(2,7);
$rand3=rand(120,150);
$rand4=rand(34,50);
imageline($captcha_imagen, $rand1, $rand2, $rand3, $rand4, $color_blanco);
//indicamos que lo que vamos a mostrar es una imagen
header("Content-Type: image/png");
//mostramos la imagen
imagepng($captcha_imagen);
?>

Saludos
En línea



Con sangre andaluza :)
jcroot

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: Duda con un script de envio en PHP
« Respuesta #3 en: 4 Abril 2007, 03:38 »

Hola!

Gracias por responder... el captcha o script que intente seguir no tiene errores, el error soy yo, osea el error esta en querer meter el contenido de captcha.php en el script que me encontre en la red (enviado.php).

Si uso el tuyo sera lo mismo, en otras palabras no sabre donde meter el codigo que me pasaste, fijate bien en mi tema que creo que el error esta que no se donde meter esto:

Código:
//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
    (!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
  echo "<h1>Test successful!</h1>";
} else {
  echo "<h1>Test failed! Try again!</h1>";
}

No se donde meter eso o como modificarlo para que se integre facilmente al script de enviado.php

Alguna ayuda?
En línea

jcroot

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: Duda con un script de envio en PHP
« Respuesta #4 en: 4 Abril 2007, 20:22 »

nadie?  :huh:
En línea

jcroot

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: Duda con un script de envio en PHP
« Respuesta #5 en: 6 Abril 2007, 07:14 »

Aun nadie? joer este foro esta pobre...  :-(
En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Duda con un script de envio en PHP
« Respuesta #6 en: 6 Abril 2007, 19:58 »

 :xD
En línea

Ojo por ojo, y el mundo acabará ciego.
jcroot

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: Duda con un script de envio en PHP
« Respuesta #7 en: 7 Abril 2007, 00:46 »

:xD

Teft sube mi tema...  ;D
En línea

jcroot

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: Duda con un script de envio en PHP
« Respuesta #8 en: 8 Abril 2007, 18:54 »

Subiendo el tema... haber si una buena alma se anima y me responde  ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda, envio de muestras sospechosas
Análisis y Diseño de Malware
x64core 2 1,507 Último mensaje 20 Febrero 2012, 01:00
por x64core
Script o herramienta para envio de peticiones
Scripting
Maxel512 8 3,792 Último mensaje 29 Marzo 2015, 01:18
por Maxel512
Duda sobre envío por Wallapop
Foro Libre
Jill Valentine 0 158 Último mensaje 27 Agosto 2020, 01:09
por Jill Valentine
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines