Previene CSRF sul sito Web pubblico senza accesso

1

Sto lavorando a un progetto web che consente a una persona di inviare un modulo di richiesta alla mia API. Ogni visitatore può inviare una richiesta tramite tale modulo senza effettuare il login.

Attualmente l'API genera un token quando la pagina viene aperta per la prima volta e il token viene quindi restituito con il modulo di richiesta POST. Ma quel token può essere usato per inviare un'altra richiesta POST. Ancora peggio se un utente malintenzionato conosce il token, può inviare una richiesta POST con qualche script senza visitare il sito Web.

Attualmente invalido il token dopo un certo periodo di tempo. Ma nel frattempo, l'attaccante può inviare più richieste con uno script Ajax. Intendo invalidare il token dopo ogni richiesta POST, ma ciò non impedisce all'hacker di inviare più richieste POST perché possono anche richiedere un nuovo token prima di ogni richiesta POST.

C'è un modo per impedire a un utente malintenzionato di inviare più richieste da uno script dannoso, senza utilizzare il modulo sul mio sito web?

    
posta Viki Theolorado 20.04.2018 - 04:55
fonte

1 risposta

1

Prima di tutto, questa non è una falsificazione di richieste, dal momento che non esiste alcuna sessione di accesso per trarre vantaggio da. Non ha molto senso ingannare un utente nell'invio di un modulo per tuo conto.

Detto questo, un cookie CSRF standard avrebbe funzionato. Genera un valore univoco per il cookie che già usi, ad ogni richiesta. Quindi controlla che sia usato una sola volta.

    
risposta data 20.04.2018 - 06:03
fonte

Leggi altre domande sui tag