Web lists-archives.com

Re: [PHP] PHP subset for user-defined functions




On 2 December 2016 19:17:36 GMT+00:00, sherwood@xxxxxxxxxxxxx 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, we?re talking
about front-end users on theinternet, with some vetting, and typically
with some software engineeringexperience. I?ve 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


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php