Hemos desarrollado un motor de búsqueda (búsqueda simple, no es necesario iniciar sesión) donde los usuarios pueden buscar detalles en la base de datos ( Apache Lucene ) ingresando su nombre (et al.), luego haciendo clic en el botón de búsqueda. La búsqueda invoca una solicitud HTTP GET asíncrona (una llamada AJAX en el mismo dominio) al servidor, que a su vez llama al motor de búsqueda. La respuesta es un objeto JSON.
He deshabilitado la política "Permitir acceso de origen cruzado" en el servidor. Parece que un atacante está golpeando continuamente el servidor de búsqueda mediante programación para descargar los datos. Lo sabemos porque la cantidad de visitas en el servidor de búsqueda es mucho mayor que la que se muestra en Google Analytics para la página de índice.
Otros desarrolladores han sugerido lo siguiente:
- Crea una sesión para la búsqueda.
- Coloque captcha en la página de índice y verifíquelo en el servidor.
- Sugieren que alguien aún puede realizar solicitudes GET programáticamente con parámetros y, por lo tanto, realizar una búsqueda, explicada por la enorme diferencia entre las visitas de página y las visitas a la página de índice.
Esto me confunde:
- ¿Se requiere realmente captcha para una aplicación que solo obtiene información, además de empeorar la facilidad de uso?
- Si he desactivado "acceso de origen cruzado" , ¿cómo puede alguien invocar llamadas al servidor mediante programación?
¿Hay mejores maneras de abordar esto (especialmente el captcha)?