[jsr-314-open-mirror] [jsr-314-open] [Spec-869-Specify CSRF Solution] PROPOSAL

Andy Schwartz andy.schwartz at oracle.com
Fri Oct 22 10:32:36 EDT 2010


Thanks for the comments Roger.

On 10/22/10 9:37 AM, Roger Kitain wrote:
> Custom forms would need to follow the new rendering requirements for 
> CSRF (described in
>  renderkit docs).

I reviewed the relevant render kit docs:

> Render a hidden field named javax.faces.Token using the 
> ResponseStateManager.VIEW_TOKEN_PARAM constant if the configuration 
> option javax.faces.CSRF_ALGORITHM is set to either of the key words 
> form or all. The name must be namespaced with the enclosing form's 
> client identifier. Render the value of this hidden field, known as the 
> "token value", as a cryptographically produced random generated value 
> (known as the "secret key") retrieved from the session. If the "secret 
> key" does not already exist in the session, create the random value 
> and store it in the session. Implementations may choose to produce a 
> more complex token value by combining the random "secret key" with 
> other values. The default value for the javax.faces.CSRF_ALGORITHM 
> configuration option is none

This seems okay, however: doesn't the FormRenderer and the 
RestoreViewPhase implementation need to be in sync on what the 
token/secret key is?  Is there a way to do this without replacing the 
Lifecycle?

>   In 2.2, we could further simplify this by providing API "hooks".
> By default, CSRF is not enabled, so existing apps continue to work.

Cool.  I still want to make sure that when this is enabled we have some 
way that custom form components can participate (even if this means some 
work for the form component/renderer implementation).

Oh, btw, one thing that I was still unclear on...  Are we also solving 
the double-submit problem - ie. do we re-generate the token on each submit?

Andy






More information about the jsr-314-open-mirror mailing list