Pregunta

As the question asks, I have a generic website using Jetty and I'm being asked for CSRF protection.

If I have a form:

<form action="http://somedomain.com/somepage">
    <input ....>
</form>

My question: If somepage only accepts content-type: application/json, is this enough to prevent CSRF? I am sure I have to generate a unique token per user. However, how would someone be able to violate CSRF if only protection is done by way of content-type?

¿Fue útil?

Solución

Short answer: Probably

Long answer: Don't bank on it.

See this question for a more complete explanation, but while content type checking works today, you can get pretty close by posting valid JSON as text/plain which may be incorrectly parsed by some backends.

Additionally, if enctype='application/json' ever becomes valid HTML, your whole system is pooched.

While it's a great first step, if you really want to protect against CSRF attacks, implement a proper CSRF token system.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top