Penso non sia possibile per una web app, qualsiasi soluzione è manipolabile dall'utente.
Potresti pensare di usare contemporaneamente tutti i sistemi che hai elencato e sperare che l'utente malizioso non pensi a tutte queste possibilità, ma chiaramente non è una soluzione affidabile.