Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/11/2011, 22:44
Avatar de waldragon
waldragon
 
Fecha de Ingreso: mayo-2010
Mensajes: 735
Antigüedad: 14 años
Puntos: 55
Respuesta: Usuario malintencionado ataca el servidor(enviando SPAM), capaz de destrui

Despues de leer tu mensaje pense en crear una captcha simple como el de openclassifieds, este muestra dos valores del 0 al 9 y pide al usuario hacer la suma de estos valores, si la suma es correcta crea el registro, si no, pasa de largo.
Yo use una base de datos con una tabla captcha y dos campos (id, valor) en valor cree diez registros con los numeros del 0 al 9 (diez en total), luego selecciono dos al azar, los sumo secretamente, y los mando por un hidden hasta el archivo que ingresa el mensaje, junto con un input rellenado por el usuario, si los valores son iguales se crea el registro, si no pasa de largo o lo mandas a algun otro lado.

captcha.php
Código PHP:
Ver original
  1. <?php
  2. $ss=1;
  3. $sentencia="SELECT * FROM captcha ORDER by rand() LIMIT 2";
  4. $resultado=mysql_query ($sentencia)or die("Error al ver los valores del captcha".mysql_error());
  5. while($ver = mysql_fetch_object($resultado)){
  6. $ccc=$ver->valor;
  7. $capt[$ss]="$ccc";//creamos primero la variable $capt[1] y luego $capt[2] ayudados por la variable$ss
  8. $ss=$ss+1;//aumentamos $ss en 1
  9. }//fin while
  10. $suma=$capt[1]+$capt[2];//creamos la suma secreta
  11.  ?>

una vez con este archivo creado, lo llamamos al formulario con include() , y agregamos el hidden y el input para mandar los datos

Código PHP:
Ver original
  1. el principio de tu form
  2. ---
  3. ---
  4. --
  5. <?php
  6. require("inc/captcha.php");
  7. echo"<div>Cuanto es $capt[1] + $capt[2] ?";
  8.  ?>
  9.  <input id="agregarsuma" title="Ingresa tu nombre" name="suma2">
  10.  <input type="hidden" name="suma1" value="<?php echo"".$suma.""; ?>" >
  11. ---
  12. --
  13. ---
  14. resto de tu form

Código PHP:
Ver original
  1. //y en el archivo en el que esta el codigo para ingresar el mensaje o lo que sea, pones
  2. $suma1=$_POST['suma1'];
  3. $suma2=$_POST['suma2'];
  4. if($suma1==$suma2){
  5. echo"creamos registro del mensaje";
  6. }else{
  7. echo"o se equivoco al sumar o es spam";
  8. }

Nota:Si tu atacantee s muy habil y logra leer los numeros dados para la suma, puedes cambiar el campo valor por el campo imagen, y agregarle imagenes de los numeros del 0 al 9 , entonces muestras las imagenes y sumas los datos de los campos valor, espero que te sea de ayuda, saludos.

Última edición por waldragon; 07/11/2011 a las 22:59