(See also Re^5: Using relative paths with taint mode and Re^7: Using relative paths with taint mode)

When I add a domain in cPanel it adds this by default:

/home/myusername/domain/cgi-bin/

Where domain/ is the webroot.

I modify it slightly cPanel so I get:

/home/myusername/domain/prod/cgi-bin/ /home/myusername/domain/test/cgi-bin/ /home/myusername/domain/dev/cgi-bin/

That should be sufficient to get any number of protected directories that are not reachable via HTTP(S), without messing with .htaccess files:

Given that only very few characters are allowed in host and domain names (only ASCII letters, ASCII digits, and the hypen are allowed for any subdomain, and the dot separates subdomains), it is trivial to create a directory below /home/myusername/ that is NOT a valid domain name, e.g. _lib or !private. (Note that all Internationalized domain names use Punycode to encode Unicode to that restricted set of characters.)

Even without shell and FTP access, you seem to be able to modify cPanel, and cPanel can create directories. So you can modify cPanel to create the directories.

Now you can create directories unreachable for HTTP(S) clients where you can store modules, configuration and database files.

Of course, depending on the actual webserver configuration, it may be possible to manually issue an HTTP request with an invalid hostname after using a valid hostname to resolve the IP address of the server. So to be paranoid, put a .htaccess file in those protected directories that prohibits all access. It won't affect the normal webserver use at all, it is just a last resort.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

In reply to Re^7: Using relative paths with taint mode by afoken
in thread Using relative paths with taint mode by Bod

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.