[ 
https://issues.apache.org/jira/browse/WICKET-1885?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Igor Vaynberg updated WICKET-1885:
----------------------------------

    Fix Version/s:     (was: 1.3.6)

> CSRF Protection via Double-submitted-cookie
> -------------------------------------------
>
>                 Key: WICKET-1885
>                 URL: https://issues.apache.org/jira/browse/WICKET-1885
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket
>    Affects Versions: 1.3.4
>            Reporter: Jörn Zaefferer
>            Assignee: Igor Vaynberg
>         Attachments: SecureForm.java
>
>
> As documented by this article 
> (http://freedom-to-tinker.com/blog/wzeller/popular-websites-vulnerable-cross-site-request-forgery-attacks),
>  the most effective and efficient protection against CSRF attacks is the 
> double-submitted-cookie pattern.
> The pattern works like this: For every form, add a hidden input field with a 
> secure random token as the value. Read that token from a cookie or generate 
> it and set is as a cookie. Add validation for the input to ensure that the 
> field value matches the cookie value.
> A form generated by the webserver contains the necessary value, a form 
> generated by a CSRF attacker doesn't, and due to the same-origin-policy, the 
> attacker has no way to read the cookie or a valid form (unless due to another 
> vulnerability, which usually makes CSRF irrelevant anyway).
> While the implementation is actually rather easy with Wicket, the theory 
> behind it is not trivial, and therefore there is a good incentive to add a 
> default implementation to Wicket, taken the burden away from the application 
> developer to worry about this issue.
> Attached is an implementation of a Form subclass called SecureForm. It adds 
> the input and generates the cookie when necessary. This is just a reference, 
> not a patch. It can be used by replacing "extend Form" with "extend 
> SecureForm" and adding the necessary markup: <input type="hidden" 
> wicket:id="csrf-protection" />
> A better implementation would generate the necessary markup on the fly, 
> avoiding the need to manually specify the markup. Also the token-generator 
> should probably be replaced, eg. using existing facilities in Wicket to 
> genrate secure random tokens.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to