The answer to all three questions is: "It depends"

The first question I'd ask myself before answering any of those questions is what are the risk factors that I am trying to mitigate? What am I trying to protect and how "valuable" a target is it?

The next factor I am going to look at is what facilities I have at my disposal to help boost my security stance.

For instance, the old hosting provider I had for my personal website had the account's directory structure such that there was one directory tree for any files associated with my account. In other words any file I put in my accounts file space could potentially be in the path of the web server serving up pages and possibly be exposed to a browser.

My current provider has my file space such that there are actually two file trees and even my HOME directory is structured so that the web files are a subdirectory under HOME. That means I can place my home grown Perl modules somewhere out of the way of a browser not to mention any configuration files. The result is none of my CGI scripts ever have information like database logins in the source code itself.

So to answer question #1, if I have my druthers I keep the CGI scripts with just the essential code in the cgi-bin. That's just how it has to be unless I have control over the webserver and can tailor it. I keep modules that those scripts are dependant on elsewhere out of the normal browsing path and do something like use lib qw@ .... path goes here @; to point to where their at.

To anwer #2 I keep my database login info in a configuration file (again outside the browsing path) and lately I've been using XML::Simple to read it in but there are other ways.

I know there are monks out there that will disagree with this statement but "best practice" is a) in the eye of the beholder and b) depends on many factors. One of those factors being what facilities you have available to you and another being to what degree do you need to be cautious. Websites that I am working on that involve financial data are going to be sites that I'm much more security concious of than say my dog club's web page announcing upcoming events. Keep in mind that no matter how secure you set things up all you are doing is raising the bar you are never going keep someone out who is sufficiently motivated and/or knowlegeable of how to circumvent security.

Last thought: there are some things you do have to consider in your coding that you really didn't ask about in the list above.


Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

In reply to Re: Structing a Web site and security issues by blue_cowdawg
in thread Structuring a Web site and security issues by bradcathey

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.