PDA

Ver la Versión Completa : proteger php


frilex
21-jul-2009, 09:46
Hola a todos,
tengo la siguiente duda:

Tengo una pagina estatica, con un formulario de contacto, que manda la informacion a una base de datos a traves de un php, que llamaremos 'add.php', el cual abre la conexion, comprueba los parametros y los inserta en la base de datos.

Obviamente, si pongo en la URL htp://direccionweb/add.php tambien se ejecuta la accion, sin parametros, pero se ejecuta...
¿Como puedo protegerlo para que solo pueda ejecutarse desde la web, o mejor, desde la web de mi servidor?
Muchas gracias a todos!

SainTRC
21-jul-2009, 14:14
puedes probar con la variable $_SERVER['HTTP_REFERER'] es algo chapuzas, pero te dice de donde viene la pagina, si no viene de tu host. POF error

frilex
21-jul-2009, 22:54
ya.. el problema es que el referer es bastante sencillo de cambiar. ¿Nadie ha tenido nunca este problema antes?

SainTRC
21-jul-2009, 22:59
pues enton define una variable y pon el add por include si la var no esta definica que el add no haga nada

frilex
21-jul-2009, 23:35
Se añade a la url de la llamada, y de repente ya existe.
Alguien se anima con otra solucion?

frankm
22-jul-2009, 05:09
-- Solución que se me ocurre utilizando PHP --

Antes de todo:

- tienes que validar el formulario, no puede ser que sólo ingresando el nombre del script guarde información o se ejecute.

- Además utiliza un generador CAPTCHA para validar la entrada

Envías una variable de verificación a add.php, sólo se ejecuta si llega la variable desde POST, adicionalmente puedes utilizar las variables de servidor $_SERVER para verificar que el servidor que llama/envía es realmente el que dice ser.

Si todavía no te gusta la solución, creo que sólo te queda restringir el acceso al formulario a través de contraseña.

PD: Existe otra solución a nivel de servidor, pero no estoy seguro si tienes los permisos necesarios.

Suerte

Apolo
28-jul-2009, 02:18
¿Has logrado solucionarlo?

Supongo que lo que primero debería hacer ese archivo add.php es verificar si la llamada incluye esos parámetros y, en caso contrario, detener su ejecución.

Saludos,

cyberneticos
30-jul-2009, 22:21
sessions y claves secretas :) Es lo que solía usar hace tiempo en una pasarle de pago, para asegurarme que solo se ejecutaba el final del proceso si coincidia cualquier clave generada en la primera página... Simple pero efectivo.

HostingDN
31-jul-2009, 19:33
Algo mas simple, dice que comprueba los parametros, con un isset para ver si en verdad la variable lleva algo, si no pues no hace nada

cyberneticos
31-jul-2009, 20:11
Tendría que discrepar contigo HostingDN. Es una buena idea lo que comentas, no hay duda ninguna, pero no puedes basarte en eso exclusivamente. Especiamente si es un isset de un get. Porque cuando hagan la primera compra van a poder ver claramente las variables enviadas. Con post también se pueden ver las variables facilmente.

Ver las sessiones es muy complicado porque permanecen en el servidor (php).

No obstante, recomiendo una mezcla de todo lo que se ha sugerido. Contra más medidas tengas más dificil será "romper en tu fortaleza".

HostingDN
01-ago-2009, 00:37
Lo se, pero yo lo sugeri porque solo habla de un formulario de contacto, no de un sistema de compra, por eso di una solucion practica.

Y si, tienes razon, para mayor seguridad siempre se manejan sessiones.

cyberneticos
01-ago-2009, 18:17
Cierto,.. yo es que con la seguridad, hasta para un formulario,. me pongo las pilas,. porque entre sniffing,. injections, exploits y sus mulas todas, hay que tener mucho cuidado, hasta con un simple formulario ;)

HostingDN
02-ago-2009, 02:02
Muy cierto, en eso te doy toda la razon.