search for in the  
<IntroductionInstalled as CGI binary>
Last updated: Thu, 19 May 2005

Chapter 23. General considerations

A completely secure system is a virtual impossibility, so an approach often used in the security profession is one of balancing risk and usability. If every variable submitted by a user required two forms of biometric validation (such as a retinal scan and a fingerprint), you would have an extremely high level of accountability. It would also take half an hour to fill out a fairly complex form, which would tend to encourage users to find ways of bypassing the security.

The best security is often unobtrusive enough to suit the requirements without the user being prevented from accomplishing their work, or over-burdening the code author with excessive complexity. Indeed, some security attacks are merely exploits of this kind of overly built security, which tends to erode over time.

A phrase worth remembering: A system is only as good as the weakest link in a chain. If all transactions are heavily logged based on time, location, transaction type, etc. but the user is only verified based on a single cookie, the validity of tying the users to the transaction log is severely weakened.

When testing, keep in mind that you will not be able to test all possibilities for even the simplest of pages. The input you may expect will be completely unrelated to the input given by a disgruntled employee, a cracker with months of time on their hands, or a housecat walking across the keyboard. This is why it's best to look at the code from a logical perspective, to discern where unexpected data can be introduced, and then follow how it is modified, reduced, or amplified.

The Internet is filled with people trying to make a name for themselves by breaking your code, crashing your site, posting inappropriate content, and otherwise making your day interesting. It doesn't matter if you have a small or large site, you are a target by simply being online, by having a server that can be connected to. Many cracking programs do not discern by size, they simply trawl massive IP blocks looking for victims. Try not to become one.



User Contributed Notes
General considerations
php at stedaniels dot co dot uk
11-May-2005 04:52
It is true that software can't erode over time. But it's security can, as new exploits and methods for bypassing the said security are discovered. The same way the trust between two people can be eroded away over time, as one discovers more about the other.
02-May-2005 03:47
"Indeed, some security attacks are merely exploits of this kind of overly built security, which tends to erode over time."

Once software is deployed, it's static. It doesn't 'erode'. It stays the same as it was yesterday and the day before.

You may come along later and make changes to it (bug-fixing)
and introduce new bugs (including ones that have impact on security) but in no way does a software system 'erode' simply by being in use.

<IntroductionInstalled as CGI binary>
 Last updated: Thu, 19 May 2005
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: The Server Pages
Last updated: Thu May 19 18:35:34 2005 EDT