Where
to place your CGI scripts:
Although there is nothing dangerous about placing cgi scripts in
random directories throughout your site, it's best if you keep them
in their own little home known as the cgi-bin. This minimizes
security risks and allows you to maintain your cgi programs from one
directory.
The path to Perl:
One of the first things you must do when configuring a script, is
set the correct path to the Perl interpreter, which is the engine
responsible for processing the script. The path to Perl on our
servers is: /usr/bin/perl
The path to Sendmail:
Some programs such as the ones, which send email will need to know
where the Sendmail program resides on the server. The script will
typically have a setting like this: $mailprog = '/usr/sbin/sendmail';
and will want you to set it appropriately. Sendmail on our servers
can be found here: /usr/sbin/sendmail.
Setting directories within your cgi
scripts:
When you configure a cgi script for "any" server, it may
ask you to set variables such as the base, relative, and CGI
directory/url settings. Here's an "example" using Matt
Wright's wwwboard.pl script. Obviously, each script may vary, but
this should provide you with some basic idea:
$basedir = "/home/yourlogin/public_html/wwwboard";
$baseurl = "http://www.yoursite.com/wwwboard";
$cgi_url = "http://www.yoursite.com/cgi-bin/wwwboard.pl";
Most scripts come with documentation on how to set these
directories. Please make sure you read and understand it before
configuring the script. New to cgi? Here is a page with questions
and answers to numerous questions evolving around the inns and outs
of using cgi within your web pages: http://www.w3.org/Security/Faq/www-security-faq.html
Another excellent site, which
provides step by step chapters is: http://www.cgi101.com/class/
Understanding
File Permissions:
There are a number of file permissions, which can be used for a
variety of different purposes, however we'll limit this tutorial to
the ones most commonly used. To begin with, it's important you
understand the three categories of permissions, which are:
Owner Permissions:
The owner is you. In most cases, this is not so much of a concern,
as you can only obtain owner permissions in one of two ways. 1. FTP
into your account using your Username and Password. 2. Login via
Telnet with the same information.
Group Permissions:
The represents a group of users who have access to a particular
directory. For example, a password protected directory, whereas only
members can access it upon providing the correct Username and
Password. In this case, any permissions you assign to
"Group" would be applicable to users with access to that
particular directory upon logging in with their username and
password.
Public Permissions:
This is the most important one of all. Public permissions determine
what your world wide visitors can and cannot do with your files.
ALWAYS make sure you understand what a particular permission does
before assigning it to a file. If not, you may wakeup to find your
website demolished by some clown who was snooping about and gained
access to your files.
Setting File Permissions:
To set file permissions:
1.
Login with your FTP client
2. Open the directory
where the file you wish to set permissions on resides
3. Right click on the
file and select CHMOD
A box similar to the one above will appear
Observe how you can
"select" the individual permissions you want, or simply
enter the 3 digit number if you know what it is. Most instructions
included with downloaded scripts will tell indicate this to you.
By default, all files uploaded to the
server automatically have permissions set to 644. The setting 644 is
relatively safe, as it provides "Read" and
"Write" access to the owner, while limiting the rest of
the public to "Read Only" access.
When setting permissions for cgi scripts, the most common
permissions setting is 755. 755 allows the owner
"Read and Write" access, while allowing the Group and
Public "Read and Execute" permissions. So what are we
actually saying? In short, when users access your cgi script, the
server has been instructed to grant them permissions to "Read
and Execute" it. Sound scary? It's not actually…
Remember that a script is a program that must be processed by the
server. As long as the script is written properly, you can safely
allow users to execute it, and thus providing the desired results.
For example, if they wanted to post a message to your wwwboard
discussion forum, then they would need these permissions to execute
wwwboard.pl, which would write their new message to an html file,
which is displayed on the main forum. The new message
would reside in a directory on your site so other users could view
it. Most cgi, perl and other scripts you'll be installing come
complete with instructions telling you which permissions you'll need
to set them to.
WARNING!
Setting permissions on files is a relatively simple task, however
MAKE SURE you fully understand what it is you're allowing the public
to do with your files. For example, some less experienced users
often make the fatal mistake of simply setting ALL of their files to
777. While 777 will automatically allow executing privileges, it
also allows full "READ, WRITE, and EXECUTION ability to the
entire world!!!!
This is how web sites get hacked! While most visitors have good
intentions, all it takes is one person whom snoops about your files
seeking an "Open Back Door." This could result is them
gaining full access to your directories, which means they can do
anything from deleting your entire site, to defacing it with
obscenities.
New to cgi? Here is a page with questions and answers to numerous
questions evolving around the inns and outs of using cgi within your
scripts: http://www.w3.org/Security/Faq/www-security-faq.html
Using Server Side Includes - SSI
SSI works in conjunction with a web page usually with the .shtml
extension. The .shtml extension tells the server to do
something different with the web page. When you append the .html or
.htm extension, this tells the server to "read" the page
only. The .shtml extension tells the server to "Execute"
the page, in addition to just reading it.
So, why would you want to execute the page? There are various
commands you can program into a web page, which the server will look
for and parse when the file is called as .shtml. In many cases, this
mode is used in conjunction with Server Side Include (SSI) tags, to
call a CGI script. For example, you have a visitor counter script,
and we'll call it count.cgi. Every time someone visits your website,
you want the script to be called, so that it logs the visitor into a
file.
To do this, you would place an SSI tag into your web page. The tag
in this case, would look something like:
<!--#exec cgi="/cgi-bin/count.cgi" -->
This small tag, which is hidden in the html coding of your page is
telling the server to:
1. Go to the cgi-bin
2. Execute count.cgi
That's it! The information has been captured and processed by the
count.cgi script. Of course, that's the short version of what
happens. The long version would no doubt, would take us far beyond
the scope of this document.
PLEASE do not use the .shtml extension on "all" of your
web pages unless it's absolutely necessary. With a busy web site,
this means that every page must be executed, as opposed to just
read. This as you can appreciate, can add considerable memory and
CPU load to the system. As always, read the instructions that came
with your script carefully. They should provide specific
instructions on how to configure the script, as well as the SSI tag.
|