2009-07-01 6 views
8

Soy un principiante en PHP.Detener datos de correos de diferentes dominios PHP

Lo que intento hacer es dejar de publicar los datos procedentes de otra página web.

El problema que tengo es digamos que alguien copia mi formulario y lo pega en su sitio web. Quiero poder evitar que Post Data ejecute el script en mi formulario de correo electrónico.

¿Cómo puedo hacer esto? Avísame si no estoy siendo lo suficientemente claro.

Mi formulario de contacto de PHP se ejecuta en una página con instrucciones condicionales. es decir, si los datos se retiran, envíe.

+1

También intenté verificar la URL en PHP, pero luego descubrí que era un error de aficionado. – Juan

+0

Ok. He revisado lo que ustedes me han dado, y he pensado en una idea diferente usando lo que ustedes me dieron ... ¿Qué pasaría si aleatorizara un conjunto de caracteres => convertidos a una variable, los publicara como el valor oculto? por lo que cambia cada vez, y verifique que cuando se ejecuta mi secuencia de comandos? – Juan

+0

error aficionado de nuevo ..... lo siento. – Juan

Respuesta

7

$ _SERVER ['HTTP_Referrer'] estaría bien, pero no es confiable. Podría usar un campo de formulario oculto para algo de MD5 y luego verificarlo en el otro lado.

+0

¿Qué pasa si aleatoricé el número y lo publiqué como un valor oculto, pero cambia? – Juan

+1

oh espera, pueden simplemente eliminar ese valor oculto y hacerlo funcionar ... jajaja. dangit, justo cuando creo que estoy recibiendo los apretones de PHP. – Juan

+0

Creo que finalmente lo descubrí, utilicé session_start, hice una variable de sesiones cuando se mostró el formulario, y luego verifiqué si la variable estaba configurada para enviar. – Juan

0

Si está buscando un enfoque rápido y sucio, puede consultar el encabezado REFERER.

Si realmente quiere asegurarse de que el formulario se haya obtenido de su sitio, debe generar un token cada vez que se cargue el formulario y adjuntarlo a una sesión. Una forma sencilla de hacer esto sería algo así como:

$_SESSION['formToken'] = sha1(microtime()); 

Luego, su forma puede tener un campo oculto:

<input type="hidden" name="token" value='<?=$_SESSION['formToken'];?>' /> 

y se puede comprobar que la hora de decidir si se debe procesar los datos del formulario.

+2

¿Necesita siquiera verificar el token en $ _POST? ¿Por qué no solo verifica si el valor $ _SESSION aún está configurado? – AndyMcKenna

9

Intentas evitar CSRF - Cross-Site Request Forgery. Jeff himself tiene un artículo de blog sobre esto.

verdadera XSRF prevención requiere tres partes:

  • Entrada oculta campos, para evitar que alguien acaba cogiendo la forma y incrustarlo
  • Timechecking dentro de un épsilon de la forma que se genere, de lo contrario alguien puede generar una forma válida una vez y utilizar el token (dependiendo de impementation/cómo se almacena)
  • cookies: esto es para evitar que un servidor malicioso de pretender que es un cliente, y realizar un ataque man-in-the-middle
+0

** ¡NINGUNO DE ELLOS AYUDA! ** ** 1) ** Entrada oculta: cualquiera puede encontrar esa entrada "oculta" en HTML SOURCE. ** 2) ** La persona remota puede generar una forma válida dependiendo de la hora actual. ** 3) ** El servidor malicioso puede configurar su cookie con '