RE: Apache rule/directive to stop serving PHP pages from /var/www/includes/ [SOLVED]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Robert Cummings [mailto:robert@xxxxxxxxxxxxx] 
> Sent: Thursday, April 01, 2010 7:23 PM
> To: Daevid Vincent
> Cc: php-general@xxxxxxxxxxxxx
> Subject: Re:  Apache rule/directive to stop serving PHP 
> pages from /var/www/includes/
> 
> Daevid Vincent wrote:
> > (Sorry if this is a duplicate. I sent one earlier with 
> "OT:" prefixing the
> > subject line and I think this list software kills the 
> message despite being
> > proper netiquette. *sigh*)
> > 
> > I have your basic web tree setup.
> >  
> > developer@mypse:/var/www/dart2$ tree -d -I 'CVS'
> > |-- UPDATES
> > |-- ajax
> > |-- images
> > |   |-- gui
> > |   `-- icons
> > `-- includes
> >     |-- classes
> >     |-- css
> >     |-- functions
> >     |   `-- xml
> >     |-- gui
> >     |-- js
> >     |   |-- charts
> >     `-- pear
> >         |-- Auth
> >         |-- Benchmark
> >         |-- DB
> >         |-- Date
> >         |-- File
> >         |-- Spreadsheet
> >         `-- XML_RPC
> >  
> > It's not ideal. I would normally have /includes/ in a 
> directory outside the
> > servable webroot directory, but for various reasons I won't 
> go into, this
> > is how it is.
> > 
> > Now I have Apache configured to NOT allow directory browsing.
> > 
> > I also have a index.html file in most all main directories 
> to log attempts
> > and also redirect back to the main site.
> > 
> > What I don't know how to protect against is if someone were 
> to KNOW the
> > name of a .php file. Say I have /includes/foo.inc.php for 
> example, someone
> > can put that in their URL and apache will happily serve it up. :(
> > 
> > Is there a directive to prevent this?
> > 
> > I would think it should be doable since PHP reads the file 
> directly off of
> > disk via a command like this and isn't really served perse:
> > 
> > require_once ROOTPATH.'/includes/functions/foo.inc.php';
> > 
> > Anyone? Anyone? Beuller? Beuller?
> 
> <LocationMatch "^/includes/">
> 
>      Order allow,deny
>      Deny from all
> 
> </LocationMatch>

Brilliant! Thanks Rob.

Here is the final that I went with (turns out I had to mind the
/includes/js directory or all my jQuery stuff STB, so that's why I call
each directory out like that):

developer@myvm:/etc/apache2/sites-enabled$ tail -n20 000-default

# [dv] added 2010-04-01 to prevent serving include files and such
<LocationMatch "/UPDATES/">
    Order allow,deny
    Deny from all
</LocationMatch>
<FilesMatch "\.sql$">
    Order allow,deny
    Deny from all
</FilesMatch>
<LocationMatch "/includes/(classes|functions|gui|pear)/">
    Order allow,deny
    Deny from all
</LocationMatch>
<FilesMatch "\.(inc|class)\.php$">
    Order allow,deny
    Deny from all
</FilesMatch>


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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux