On Wed, 3 Mar 2004, joel boonstra wrote:

> On Wed, Mar 03, 2004 at 08:39:06AM -0500, Chris wrote:
> > One final comment. It seems there was some motivation, by the PHP creators,
> > to institute safe mode as a fix to potential security abuses. If that was
> > the case, why weren't the underlying problems be removed or remedied as
> > opposed to letting PHP admins make the call?
>
> To remove the underlying problem, changes in Apache would have to be
> made.  The problem is that mod_php (not necessarily PHP as CGI) runs as
> the same user that Apache runs as.  There is nothing PHP developers can
> do about that.  This means (assuming mod_php) that when your hosted
> website runs a PHP script, and another website hosted by the same
> company runs a PHP script, both scripts are running as the same
> username.  This opens any number of potential for malicious or
> accidental access to others files. Additionally, all system calls will
> be called as the same user, so the server's built-in mechanisms for
> determining user permissions are useless.
>
> One solution is to run PHP as CGI and use suexec to cause PHP scripts to
> be run as specific usernames.  However, there are speed and integration
> advantages to running as mod_php, so using CGI isn't necessarily the
> best solution.
>
> The other is to use safe mode, which does what it can to help solve
> security concerns by relying on file permissions to determine what can
> accessed, and by restricting things like system calls that are too
> potentially harmful.  It's not the right way to solve the problem (as
> they mention on the safe mode page), but solving at the Apache level[1]
> may or may not be viable.
>
> Safe mode is not necessarily appropriate for all situations; on personal
> servers, or single-user websites, it can be too restrictive.  However,
> for hosting companies, as others have said, not using it has the
> potential to make your customers very unhappy when someone else's
> poorly-coded script starts wreaking havoc.
>
> [1] Apache 2's "perchild" MPM looks interesting:
>
> http://httpd.apache.org/docs-2.0/mod/perchild.html
>
> When it's functional, I'm not sure if it will eliminate the need for
> safe mode or not.  It still appears that for large hosts, managing the
> UIDs might be difficult.  I'm by no means an apache admin, but if my
> hosting company has 300 vhosts, it seems like you'd have to start at
> least that many servers, and that only one instance will be tied to a
> vhost (so if one vhost is getting lots of traffic, and one is getting
> only a little, there won't be spare servers around to balance things
> out).  I'm basing that all on what I read at Apache's site, so I may
> well be wrong.

That was a very good summary.  ;)

-Rasmus

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

Reply via email to