Es imposible para garantizar con seguridad que un usuario no autorizado no puede falsificar una solicitud válida.
Después de todo, si el navegador puede crear una "solicitud válida", entonces también lo puede hacer un usuario autorizado!
Sin embargo, este es un requisito inusual, y estoy interesado en saber cuál es la motivación detrás de esto.
Existen, sin embargo, varias formas de dificultar la suplantación de la solicitud.
Dado que ningún método será completamente seguro, puede intentar ofuscar y hacerlo tedioso para que alguien pueda suplantar sus peticiones.
Como han sugerido otros, podría crear un "token" aleatorio por sesión y requerirlo en la URL (ya sea como una ruta o como una cadena de consulta).
Sería incluso mejor utilizar JavaScript para esto. Renderiza una entrada oculta con este "token". Luego, intercepte el evento click
de cada enlace, agregue el valor "token" a la URL, luego navegue a la URL.
Puede mejorar el JavaScript para "procesar" su token de algún modo antes de usarlo, y minimizar su JavaScript para ofuscarlo ... esto definitivamente disuadiría incluso a los usuarios por encima del promedio de modificar sus URL.
Existen muchas soluciones posibles, pero la solución "correcta" realmente depende de qué comportamiento específico está tratando de evitar.
Cómo "seguro" no esta necesidad de ser? ¿Desea evitar que los usuarios puedan marcar y escribir URLs? ¿O realmente quiere hacerlo seguro contra personas que realmente saben cómo falsificar JavaScript y las cookies? –
Quiero hacer esto lo más seguro posible, por lo que el urlreferrer no es realmente adecuado, ya que se puede falsificar con bastante facilidad – Duy
¿Esto es para prevenir CSRF? ¿O realmente necesita evitar que incluso los usuarios "autorizados" falsifiquen solicitudes válidas? –