Pregunta

Estoy usando jquery ajax para publicar actualizaciones en mi servidor.Me preocupa asegurarme de haber implementado las medidas adecuadas para que solo mis llamadas AJAX puedan publicar datos.

Mi pila es PHP en Apache contra un backend MySQL.

¡Se agradecen mucho los consejos!

¿Fue útil?

Solución

Cualquier solicitud que puedan realizar las llamadas AJAX en sus páginas también puede ser realizada por alguien externo a la aplicación.Si se hace correctamente, no podrá saber si se realizaron como parte de una llamada AJAX desde su aplicación web o manualmente/por otros medios.

Se me ocurren dos escenarios de los que podrías estar hablando cuando dices que quieres asegurarte de que solo tus llamadas AJAX puedan publicar datos:o no desea que un usuario malintencionado pueda publicar datos que interfieran con los datos de otro usuario o realmente desea restringir las publicaciones para que estén en el "flujo" de una operación de solicitudes múltiples.

Si le preocupa el primer caso (alguien publica datos maliciosos a/como otro usuario), la solución es la misma ya sea que esté usando AJAX o no: solo tiene que autenticar al usuario a través de cualquier medio que sea necesario, generalmente a través de una sesión. Galleta.

Si le preocupa el segundo caso, tendrá que hacer algo como emitir un token único en cada paso del proceso y almacenar el token esperado en el lado del servidor.Luego, cuando se realice una solicitud, verifique que haya una entrada correspondiente en el lado del servidor para la acción que se está realizando y que los tokens esperados coincidan y que ese token aún no se haya utilizado.Si no lo hay, rechaza la solicitud; si lo hay, marca ese token como usado y procesa la solicitud.

Si lo que le preocupa es algo distinto a uno de estos dos escenarios, entonces la respuesta dependerá de más detalles de los que haya proporcionado.

Otros consejos

Utilice sesiones para garantizar que cualquier publicación de Ajax se realice en un contexto autenticado.Piense en su código Ajax como un cliente más de su servidor; de esa manera será más fácil abordar los problemas de autenticación.

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