Pregunta

¿Cuál es la mejor práctica para asegurarse de que ciertas llamadas ajax a determinadas páginas solo se acepten por parte de usuarios autenticados?

Por ejemplo:

Digamos que tengo una página principal llamada blog.php (Lo sé, la creatividad abunda).Digamos también que hay una página llamada eliminar.php que busca el parámetro ID del mensaje y luego elimina alguna entrada de una base de datos.

En este ejemplo tan artificial, hay algún mecanismo en blog.php que envía una solicitud vía ajax a delete.php para eliminar una entrada.

Ahora este mecanismo sólo estará disponible para usuarios autenticados en blog.php.Pero, ¿qué impide que alguien simplemente llame a delete.php con un montón de números aleatorios y borre todo lo que hay en el sitio?

Hice una prueba rápida en la que configuré una variable de sesión en blog.php y luego hice una llamada ajax a eliminar.php para devolver si la variable de sesión estaba configurada o no. (no lo fue).

¿Cuál es la forma aceptada de manejar este tipo de cosas?


DE ACUERDO.Debí estar loco la primera vez que probé esto.

Acabo de hacer otra prueba como la que describí anteriormente y funcionó perfectamente.

¿Fue útil?

Solución

Tenías razón al intentar utilizar variables de sesión.Una vez que su usuario se autentica, debe almacenar esa información en su sesión para que cada vista de página posterior la vea.Asegúrate de llamar session_start() en ambas páginas (blog.php y delete.php) antes de acceder a $_SESSION.También asegúrese de tener las cookies habilitadas; si no, debe pasar un parámetro adicional en la cadena de consulta, generalmente PHPSESSID=<session_id()>.

Otros consejos

No se recomienda confiar en las sesiones para la autenticación sin realizar acciones adicionales.Leer más en.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top