Jump to content

Community

Is manual CSRF required for `\IPS\Node\Model` subclasses?


MrFisc
 Share

Go to solution Solved by MrFisc,

Recommended Posts

I use `\IPS\Node\Model` to manage some things in my application, yet any time I save the form I get a CSRF error. I looked into the Security Considerations documentation and it only mentions that calling `$form->values()` will automatically handle CSRF, but it also only explains how to use CSRF for URLs, which aren't used with `\IPS\Node\Model` subclasses. The nodes example also doesn't mention anything about CSRF.

Link to comment
Share on other sites

3 minutes ago, Adriano Faria said:

I've read that too. It's still totally unclear what I need to do with my node subclass. Do I just add the `public static $csrfProtected = TRUE;` to the top of the class? Do i need to add `\IPS\Session::i()->csrfCheck();` to the `saveForm` function? But that doesn't make any sense, since it's using the `\IPS\Helpers\Form` class and not creating my own URL (so i can't use `->csrf()` on any URLs). I assume it's calling `$form->values()` before calling `saveForm`?

Link to comment
Share on other sites

  • Solution
3 hours ago, bfarber said:

You don't need to add that property to a model class. It should be added to your controller class.

Generally speaking you shouldn't be handling CSRF checks within your model at all.

I figured it out. My confusion was around the `csrfProtected` property.

I needed to add it to any Controller that uses the Node due to the nodes reliance on an `\IPS\Helpers\Form`.

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We use technologies, such as cookies, to customise content and advertising, to provide social media features and to analyse traffic to the site. We also share information about your use of our site with our trusted social media, advertising and analytics partners. See more about cookies and our Privacy Policy