Re: [PHP] PHP subset for user-defined functions
[email protected] (George Sherwood)
| Newsgroups | php.general |
|---|---|
| Message-ID | <[email protected]> |
> On 2 December 2016 19:17:36 GMT+00:00, [email protected] wrote: >> Ihave developed and operated a Linux-Apache-MySQL-PHP service for >> several years.A new feature requires support for simple, user-defined >> functions, to returnvalues used by the service. Here, were talking >> about front-end users on theinternet, with some vetting, and typically >> with some software engineeringexperience. Ive been thinking about >> security and support issues of course.Currentplans are to offer a >> subset of PHP for the user-defined functions: Submittedfunctions would >> be scanned, and only allowed functions and keywords would besupported. >> Variable functions would be disallowed, etc. Does anyone haveexperience >> or advice regarding this type of >> approach?Thanks,GeorgeSherwoodThesereferences describe the >> feature:http://testcover.com/pub/background/ecbecc.pdfhttp://testcover.com/pub/background/iwct2015.pdfhttp://testcover.com/pub/background/iwct2016.pdf > Even with the best of intentions, this sounds fraught with potential > security flaws. > What sorts of things do you want them to be able to do? Is it > feasible to offer them basic building blocks which can be connected > to each other, e.g. graphical programming style? > Thanks, > Ash My apologies for the one-liner; I'm trying a different mailer now. > Even with the best of intentions, this sounds fraught with potential > security flaws. Yes. This was my initial thought too. If you have specifics, I'd love to hear them. I have looked into vulnerabilities somewhat. > What sorts of things do you want them to be able to do? Here's an example. There are more in the PDFs cited above. function Weight_boundary($Height,$BMI_boundary,$Input_limit) { /* Weight boundary value function */ if($Height>0&&$BMI_boundary>0) { $w_hi=ceil($Height*$Height*$BMI_boundary/703.06957964); /* round up $w_hi so BMI >= $BMI_boundary */ switch($Input_limit) { case 'min': return($w_hi); /* return minimum integer value for higher BMI class */ case 'max': $w_lo=$w_hi-1; return $w_lo; /* return maximum integer value for lower BMI class */ } } } > Is it feasible to offer them basic building blocks which can be > connected to each other, e.g. graphical programming style? I don't think so. The plan under consideration would use only the most basic, safe internal functions. BTW, I appreciate the power and flexibility of PHP. That's why I use it. And I don't take the idea of limiting it lightly. Best regards, George