2008-08-18 20 views
9

¿Cuál es la mejor práctica para asegurarse de que ciertas llamadas ajax a ciertas páginas solo sean aceptadas por usuarios autenticados?Aceptando solo ciertas solicitudes ajax 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 delete.php que busca el parámetro post_id y luego borra alguna entrada de una base de datos.

En este ejemplo muy artificial, hay un mecanismo en blog.php que envía una solicitud a ajax para eliminar.php para eliminar una entrada.

Ahora este mecanismo solo 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 elimine todo en el sitio?

Hice una prueba rápida donde hice una variable de sesión en blog.php y luego hice una llamada AJAX a delete.php volver si la variable de sesión se establece o no (que no era).

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


OK. Debo haber estado loco la primera vez que probé esto.

Acabo de hacer otra prueba como la que describí anteriormente y funcionó a la perfección.

Respuesta

8

Has acertado al intentar utilizar variables de sesión. Una vez que el usuario se autentica, debe almacenar esa información en su sesión para que cada vista posterior de la página lo vea. Asegúrese de llamar al 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, y si no, debe pasar un parámetro adicional en la cadena de consulta, generalmente PHPSESSID = < session_id()>.

3

No se recomienda que dependa de sesiones para la autenticación sin tomar medidas adicionales. Read more on.

Cuestiones relacionadas