Abbiamo sviluppato un motore di ricerca (semplice ricerca, nessun accesso richiesto) in cui gli utenti possono cercare i dettagli nel database ( Apache Lucene ) inserendo il loro nome (et al.), quindi facendo clic sul pulsante di ricerca. La ricerca richiama una richiesta HTTP GET asincrona (una chiamata AJAX sullo stesso dominio) al server che a sua volta chiama il motore di ricerca. La risposta è un oggetto JSON.
Ho disabilitato la politica "Permetti accesso incrociato" sul server. Sembra che un utente malintenzionato picchi continuamente sul server di ricerca per scaricare i dati. Lo sappiamo perché il numero di accessi sul server di ricerca è molto più grande di quello mostrato da Google Analytics per la pagina indice.
Altri sviluppatori hanno suggerito quanto segue:
- Crea una sessione per la ricerca.
- Inserisci captcha nella pagina dell'indice e verificalo sul server.
- Suggeriscono che qualcuno possa ancora programmare le richieste GET con parametri e quindi eseguire una ricerca, spiegata dall'enorme differenza tra le visite alle pagine e le visite alla pagina dell'indice.
Questo mi confonde:
- Se il captcha è veramente necessario per un'applicazione che recupera solo le informazioni, oltre a peggiorare l'usabilità?
- Se ho disabilitato "accesso incrociato" , in che modo qualcuno può richiamare programmaticamente le chiamate sul server?
Ci sono modi migliori per approcciare questo (specialmente il captcha)?