Stop Python directives being used in .htaccess files.
-----------------------------------------------------

                 Key: MODPYTHON-183
                 URL: http://issues.apache.org/jira/browse/MODPYTHON-183
             Project: mod_python
          Issue Type: New Feature
          Components: core
            Reporter: Graham Dumpleton


When changes to support use of wildcards in conjunction with the Directory 
directive (as described in MODPYTHON-63), and use of DirectoryMatch or ~ with 
the Directory directive are also supported, it will be possible to say 
something like:

    <Directory /home/*/public_html> 
        AddHandler mod_python .py 
        PythonHandler mod_python.publisher 
        PythonInterpPerDirective On
        PythonDebug on 
    </Directory>

Such a setup will allow for a form of automatic mass hosting where it is not 
necessary to specify the directives for every user manually. Further, the use 
of the PythonInterpPerDirective directive will mean that each users code is 
isolated within their own Python interpreter instance. How well this will scale 
is another issue, but it will be possible to do.

The problem with this is that if the user is still able to make use of a 
.htaccess file, then it is possible for them to override these directives to 
make it do something entirely different, or even override which Python 
interpreter instance is used and force their handlers to run within the context 
of another users Python interpreter. If an administrator wants to be able to 
force that things are done in a specific way, but still allow some level of 
control by a user using a .htaccess file, then a way is needed of specifying 
from the main Apache configuration file that a user .htaccess file is not 
allowed to override the behaviour of different aspects of mod_python.

This could be achieved by implementing a new directive called 
PythonAllowOverride. The simplest argument to this directive would be:

  PythonAllowOverride None

By specifying this in the main Apache configuration file, it would prevent the 
use of any mod_python related directives in .htaccess files.

In addition, since mod_python allows everything to be overridden by default 
anyway, one could use a subtractive approach to allow specific features to be 
prohibited from being overridden in a .htaccess file. For example:

  PythonAllowOverride -Interpreter

This would have the affect of prohibiting the use of PythonInterpreter, 
PythonInterpPerDirectory and PythonInterpPerDirective.

One could also prohibit any handlers being specified in a .htaccess file using:

  PythonAllowOverride -Handlers

Rather than prohibiting all handlers, one could allow each to be enumerated.

  PythonAllowOverride -AccessHandler -AuthenHandler -AuthzHandler

This particular case would be quite important, as at the moment there is 
potential for a user to override a site wide security scheme by specifying 
their own authentication handler that replaces the site wide security and just 
lets everyone in.

Allowing a user to use the PythonOption directive could also be prohibited.

  PythonAllowOverride -Options

Not allowing them to specify any options at all though might be a bit 
draconian, but you might want to at least prohibit them from setting certain 
options. For example, when mod_python is fixed so as to always use a 
'mod_python.' prefix for its own options, you might specify:

  PythonAllowOverride -Options=mod_python.*

By doing this, you would prohibit a user for overriding options related to 
sessions for example and thereby screwing things up. The syntax for this one 
may need to be different, or even perhaps supported by a separate directive for 
this purpose.

It should be noted though, that a users handler could still set options from 
within the handler itself, but the important thing is that no options would 
have played havoc with handlers for earlier phases such as authentication 
phases in cases where allowing a user to specify a handler for the earlier 
phase was prohibited.

Other things that could be selectively prohibit are:

  PythonAllowOverride -Path
  PythonAllowOverride -AutoReload
  PythonAllowOverride -Debug

All in all, something like this directive is needed to make mod_python more 
attractive in environments where an extra level of control is required such as 
shared hosting or even company systems where users are allowed to specify their 
own web pages/handlers.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to