Security
Good security is a shared responsibility. It's not about risk-- it's
about trust, and making sure that visitors see what you made for them,
no more, no less. We try to keep private things private while making
web things easy for both creators and visitors to find. Thus 'home'
and 'web' files are kept separate.
The short summary is "keep mail and other personal/business documents
in your home directory, and put only web pages in the "www" directory.
Security on RPGnet has become a stronger concern for us. Security is
really a matter of taking trust seriously. This means that visitors
to your site see what you put them for them, and not other stuff
that you didn't mean for them to see. And, that if someone does
try to pry deeper, that they can't, so things you believe are private
really are. These two aspects work together so that good security
results in better communications and fewer confusions for your work.
On our site, this takes the form of four basic points.
- Personal files (email and such) are kept separate from web-visible
files.
- The use of publically-writeable ('shared') directories for scripts,
incoming ftp, or web files will be kept to a minimum, and in general
each user has access only to their own files.
- Periodic security scans will be run on RPGnet by our security sysadmin
to make sure there were no intrusions.
- Anti-SPAM and anti-hacking procedures will be run. Technically, anti-SPAM
isn't a security matter, but we will be implementing blocking filters to
try and reduce it.
Of these four points, the only that one directly involves you is the
first-- that your personal files (email and such) are kept isolated
from the web-visible files. The other points are simply aspects you
may wish to be acquainted with, depending on how 'hands on' you
feel about security concerns. We believe that informed users are
happier and more secure, and are always willing to discuss such points.
Ultimately, site security is a combined responsibility of the system
administrators and all the users.
On security and cgibin
If you are using HTML forms to pass parameters to system calls or
executable programs, please screen out bad variables. For example,
if your script returns a number $my_value, and then uses it in
the script by running "ls $my_value, this is dangerous if $my_value is
not tested. If a user were to input " 2; delete *" into the FORM,
this would be passed to your script and execute as "ls 2; delete *".
In short, allowing unchecked input can allow hackers to execute commands
as if they were logged onto the rpg.net machines.
Fortunately, there are many ways in Perl to check input values. If you
have read in a Form value into $my_value and it is supposed to be a
number, the line:
$my_value =~ s/[^\d-.]//g;
will screen out all non-numbers (but keep decimal places and negative
signs). Similar constructions can be used to (at the very least) strip out
any "/" or ";"s from the form, to prevent hackers from gaining access.
Back to RPG Web Services