Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Static Publisher makes UserForm return "SecurityID doesn't match, possible CSRF attack"


Reply

6 Posts   2272 Views

Avatar
socks

5 July 2010 at 6:40am Community Member, 190 Posts

SS 2.4
UserDefinedForm 0.3.0

When I enable Static Publisher and try to submit the form, I get redirected to a white page with the warning "SecurityID doesn't match, possible CSRF attack." and the form doesn't submit.

I'd really like to use Static Publisher, so any thoughts on how to fix this would be much appreciated.

If there isn't a fix, can I easily exclude that form page from being cached when using Static Publisher?

Thanks

Avatar
socks

5 July 2010 at 6:56am Community Member, 190 Posts

Is the missing "value" on the Static page the issue?

Dynamic version of UserDefinedForm:

<input class="hidden nolabel" type="hidden" id="Form_Form_Referrer" name="Referrer" value="http://blabla.com/silverstripe/locations/finished?referrer=http%3A%2F%2Fblabla.com%2Fsilverstripe%2F" />

Static version:

<input class="hidden nolabel" type="hidden" id="Form_Form_Referrer" name="Referrer" value="" />

Avatar
Willr

5 July 2010 at 9:17am Forum Moderator, 5511 Posts

I would disable Static Publisher (which I think you need to do with any forms anyways). You can add an exception in the allPagesToCache() function to remove pages with the classname 'UserDefinedForm'.

See http://doc.silverstripe.org/staticpublisher#usage

Avatar
TotalNet

5 July 2010 at 10:22am Community Member, 181 Posts

..."Is the missing "value" on the Static page the issue?"...

Not exactly, it's the Form_Form_SecurityID hidden input, see [url=http://doc.silverstripe.org/form#form_security]http://doc.silverstripe.org/form#form_security[/url]

While we're on the subject ... when a form post fails this CSRF check it raises a http 400 error but does not seem to use the "400-Bad Request" error page I have created in the CMS, should it? (there is an error-400.html in the assets folder)

Cheers

Rich

Avatar
socks

6 July 2010 at 5:31am Community Member, 190 Posts

Thanks for the help!

I got that to work for my UserDefinedForm page, but I do have a simple form on every page. So I guess I'll look into Partial Caching instead of Static Publisher.

Avatar
TotalNet

6 July 2010 at 9:58am Community Member, 181 Posts

Or you could disable security for just that form

$myForm->disableSecurityToken();


All depends on the CSRF risk of the particular form.

I haven't tried partial caching myself but am so happy with static caching that I'll try to make that work wherever I can.