2010-06-04 27 views
17

¿Qué sucede si un usuario mira mi archivo JavaScript, copia el contenido de una función y envía una solicitud a mi servidor usando AJAX? ¿Y hay alguna forma de proteger adecuadamente contra esto?Hacer llamadas AJAX seguras

Respuesta

15

La forma de protección contra esto no es diferente a la forma en que protege contra cualquier solicitud web. Lo hace para que su sitio requiera algún tipo de autenticación (es decir, los usuarios tengan que iniciar sesión) y no hace nada si la solicitud no se autentica correctamente.

Normalmente, cuando realiza una solicitud AJAX, las cookies también se envían junto con la solicitud, por lo que debería ser capaz de utilizar el mismo método de autenticación que utiliza para sus solicitudes habituales con sus solicitudes AJAX.

+1

Ahh tiene sentido. Simplemente no sabía si los navegadores tenían algún tipo de protección de dominio cruzado de algún tipo. Gracias amigo. –

+0

el navegador no permitirá xmlhttprequest desde otro servidor/dominio. Sin embargo, si está permitiendo solicitudes json-p, podría suceder, también alguien podría falsificar el navegador, tratar solicitudes de ajax como cualquier otro, como se mencionó. – Tracker1

9

Según Codeka, no hay forma de evitar que alguien cree su propia consulta Ajax idéntica a la que tiene en su solicitud de Javascript. La protección entre dominios no necesariamente lo protegerá allí, ya que, si lo desean, pueden escribir el Javascript en la barra de direcciones mientras están en una página de su sitio.

La única protección que tiene es validar la entrada y los parámetros proporcionados a través de la consulta Ajax en el lado del servidor. Limite cada PHP o Python o cualquier script de respuesta a una tarea muy específica, y verifique la entrada en el lado del servidor. Si algo está mal, responde con un error.

En resumen, no hay manera de evitar que alguien envíe la solicitud, pero puede evitar que hagan algo que no quiere que hagan en su servidor.

+4

¿Esto significa que nunca se podría crear una arquitectura CRUD segura * y * generalizada usando AJAX? – dclowd9901

0

Suponiendo que necesita alguna forma de autenticación:

Creo que se puede mantener la sesión de base de datos para validar si la solicitud proviene de un usuario genuino por forjado. Use cookies cifradas para almacenar la ID de la sesión y remita la ID de sesión de la cookie a la base de datos para validar al usuario

Cuestiones relacionadas