Not all crons run in CLI mode. You can't run in CLI mode if you want to give users the ability to use external cronjob services unless you use a script which is called by the external service by HTTP to start a shell script.
which completly defeats the idea of CSRF
So, you are saying that those who are not able to run crons by calling a shell script (shared hosting) should not be able to run Roundcube and its plugins?
i would not do that and looking at the price of a VPS where you can run real cronjobs i don't see a reason
As far as I understand CSFR it should prevent POST and AJAX-Requests from not authorized sources and nothing else
- a cronjob is a serverside action
- a serverside action must not be triggered uncrontrolled
Why do you have concerns to run HTTP based cronjobs?
because it's likely unsecure in many situations and you open a can of worms because it fights with server configurations and ressource limits because it fights with timeouts and what not
Well, this is off topic here. So, let's move this discussion to another topic.
I don't want to have sessions started when it is not needed. I'm not convinced by your argumentation. Why? Because at the end of time you are saying that plugin developers don't know what they have to do and they have to be protected against their own code.
that's why possible ressource intensive and long running things typically are not done within the webserver process
Isn't it true, that I have to know what is resource consuming when running code on Roundcube's startup hook? So, if your arguments are valid then you have to start a discussion about removal of 'startup' hook from Roundcube and to disallow code execution at all in not authenticated state. I'm curious what other plugin developers will say to such a consequence.
Of course there are IP or authorization token checks. I didn't say that Devs should disable security features.
but don't start a session because a random GET parameter leads in two options, none of them makes sense
- your request does anyways not work because the CSFR
- you disable also CSFR if the param is given which is not smart to
say it polite
See my comments above in regards to Roundcube's 'startup' hook.