salcho edited a comment on pull request #439:
URL: https://github.com/apache/wicket/pull/439#issuecomment-667535947


   Hi @svenmeier , @papegaaij and @eozmen410 
   
   I think Sven is right in saying that the legacy CSRF protection makes many 
decisions based on the Origin that don't belong in Fetch Metadata. Since we all 
agree that the legacy protection is still useful to add support for legacy 
browsers, I've tried to find the right balance between the new security 
mechanism we want to provide and the legacy one in Wicket, without introducing 
breaking changes. I've pushed a new commit, here's a summary of the changes:
   
   - It adds a new Fetch Metadata Request Cycle Listener that always runs the 
default resource isolation policy, which protects against all major CSRF 
attacks and can be extended in the future to add more policies.
   - It makes the legacy CSRF Prevention listener implement 
ResourceIsolationPolicy. This allows us to reuse its logic around whitelisting 
origins, hosts and providing protection for legacy browsers. This is left as a 
choice for developers to opt in, if needed.
   - It resolves the contradictory decision making trees of both the default 
and origin-based policies, such that we won't have the contradictions/false 
positives mentioned in one of my comments above.
   - I have gone as far as marking the CSRF Prevention listener as deprecated! 
I don't know if this is the right decision and would be happy to get some 
feedback on this. Perhaps by marking it as such we can get developers to 
migrate to Fetch Metadata as a definitive security protection against CSRF 
attacks.
   
   One possible improvement would be to extract the Origin-based protection 
entirely into a brand new OriginBasedResourceIsolationPolicy and run that by 
default too. That could potentially provide the best of both worlds.
   
   I hope this finds the right balance/compromises to keep Wicket users safe 
while introducing no breaking changes!
   
   WDYT?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to