Estoy construyendo un juego de navegador y estoy usando una gran cantidad de ajax en lugar de actualizaciones de página. Estoy usando php y javascript. Después de mucho trabajo noté que ajax no es exactamente seguro. Las amenazas que me preocupan es decir que alguien quiere buscar información de alguien en mi servidor SQL, solo necesitan ingresar la información correcta en mi archivo .php asociado con mis llamadas ajax. Estaba usando GET style ajax calls, lo cual era una mala idea. De todos modos, después de una gran cantidad de investigaciones, tengo las siguientes medidas de seguridad en su lugar. Cambié a POST (que no es realmente más seguro pero es un deterent menor). También he referido en su lugar, que una vez más se puede fingir, pero nuevamente es otro elemento de disuasión.Ajax Security (espero)
La medida final que tengo en el lugar y es el foco de esta pregunta, cuando mi sitio web está cargado tengo una clave hexadecimal de 80 caracteres generada y guardada en la sesión, y cuando envío la llamada ajax también estoy enviando el desafío clave en la forma de
challenge= <?php $_SESSION["challenge"]; ?>
ahora cuando el archivo php ajax lea esto se comprueba para ver si el desafío enviado matchs el reto sesión. Ahora esto por sí solo no haría mucho porque simplemente puede abrir firebug y ver qué desafío se envía fácilmente. Entonces, lo que estoy haciendo es que una vez que se utiliza el desafío, genera uno nuevo en la sesión.
Así que mi pregunta es qué tan seguro es esto de donde se ve que solo se podía ver cuál era la clave de desafío después de que se envió y luego se renueva y no pudieron volver a verla hasta que se envió, por lo que no es posible para enviar una solicitud falsa de otra fuente. Entonces, ¿alguien ve un agujero en el bucle de este método de seguridad o tiene pensamientos o ideas adicionales?
Esto suena exactamente como lo que quiero acometer, ¿podría darme alguna información sobre cómo autenticaría a alguien con este identificador único? – tye
Si está trabajando en un juego, supongo que es posible que tenga usuarios y registro resueltos. Más allá de eso, estás buscando algo que comúnmente se conoce como "ACL". Básicamente, a los usuarios (o grupos de usuarios) se les otorgan conjuntos de permisos para lo que pueden hacer ("pueden agregar artilugios", "pueden editar * propios * artilugios", "no pueden eliminar widgets", etc.). Ese es un gran tema para otra pregunta, y probablemente ya se haya respondido/respondido bien. –