Every so often, I get asked for a recommendation for a content filter — usually accompanied by the adjectives perfect or best. My answer is that the best content filter available is called Parental Supervision. It is free and easy to install, but difficult to maintain…
As for actual software, I haven’t dealt with any that I haven’t been able to bypass. Realize that on occasion it requires a Knoppix bootdisk, but still, don’t expect to find a piece of software that you can install on your child’s laptop and be certain that he/she will be unable to access anything bad. Nothing surpasses parental training and supervision. Keeping your computer in a public place is one of the first and most effective steps you can take.
With that said, you probably want some software to keep your child from accidentally stumbling upon something bad in the course of normal browsing. There are two main types of software for this:
The first is a standard blacklist. This is the most common and simplest method of implementing a content filter. The software simply contains a list of sites and pages that contain bad content. Obviously, the weakness of this approach is that it is impossible for anyone to keep up with all of the filth that is added hourly. The second method is to actually analyze the content as it enters the network or computer. This is much harder to do well, but it blocks far more content with the downside of more false positives (i.e. good sites that are blocked). This is an acceptable tradeoff for most parents.
A simple solution that I recommend everyone do in addition to any other filter they may use is OpenDNS. OpenDNS is a site level filter (amongst other things) that is relatively easy to implement and maintain. It is also free for the standard package. You can implement this at the network level on your router, or on the computer level by changing some settings. The instructions on the website are quite good. OpenDNS uses a site level blacklist, so it is not infallible, but it is pretty good. OpenDNS is also relatively easy to bypass, either by changing the DNS settings on the local computer to point to another DNS provider (although this can be blocked if you have a more advanced router), or by simply connecting to another network (if you have implemented OpenDNS in your router).
The solution I personally use requires a dedicated Linux server and a knowledge of the Linux command line, thus placing it outside the realm of usefulness for most parents. But in case you are still interested, I use DansGuardian. The advantage of this solution – besides being free – is that it analyses the content before it reaches the browser on a per page basis. It is very powerful, and would be useful for a middle to larger sized school or organization.
There are a ton of filter packages, about which I know little. Please leave any observations or experiences in the comments!