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.

joel

-- 
[ joel boonstra | gospelcom.net ]

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

Reply via email to