<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pam Van Londen &#187; User Data</title>
	<atom:link href="http://pamvanlonden.com/category/knowledge/user-data/feed/" rel="self" type="application/rss+xml" />
	<link>http://pamvanlonden.com</link>
	<description>Corvallis Artist, Oregon Artist. Creating Every Day...paintings, web sites, and courses Oregon daily painter, murals and portraits. Corvallis Web Designer / Web Developer</description>
	<lastBuildDate>Thu, 09 Sep 2010 16:13:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Web Security Checklist</title>
		<link>http://pamvanlonden.com/web-security-checklist/</link>
		<comments>http://pamvanlonden.com/web-security-checklist/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 18:24:43 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Policies]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://pamvanlonden.com/?p=1629</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/web-security-checklist/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Readings Web Applications Security Tutorial Jerry Berkman, 2003. A Guide to Building Secure Web Applications and Web Services Open Web Application Security Project. 2005 PDF. Open Web Application Security Project OWASP.org. Top 10 Vulnerabilities in Web Applications. November 2006. Secrets and Lies: Digital Security in a Networked World Bruce Schneier, John Wiley &#38; Sons, 2000. [...]]]></description>
			<content:encoded><![CDATA[<div class="floatingcontainer">
<h4>Readings</h4>
<dl>
<dt><a href="http://oldsocs.berkeley.edu:7309/web_sec/page1.html" target="_blank">Web Applications Security Tutorial</a></dt>
<dd>Jerry Berkman, 2003.</dd>
<dt><a href="http://www.owasp.org" target="_blank">A Guide to Building Secure Web Applications and Web Services</a></dt>
<dd>Open Web Application Security Project. 2005 PDF.<br />
<a href="http://www.owasp.org/documentation/topten.html" target="_blank">Open Web Application Security Project</a></dd>
<dd><a href="http://www.owasp.org/documentation/topten.html" target="_blank"></a>OWASP.org. Top 10 Vulnerabilities in Web Applications. November 2006.<strong></strong></dd>
<dt><a href="http://www.schneier.com/book-sandl.html" target="_blank">Secrets and Lies: Digital Security in a Networked World</a></dt>
<dd>Bruce Schneier, John Wiley &amp; Sons, 2000.<br />
ISBN 0-471-25311-1 </dd>
<dt><a href="http://www.cert.org/tech_tips/malicious_code_mitigation.html" target="_blank">Understanding Malicious Content Mitigation for Web Developer</a> </dt>
<dd>(CERT 2000)</dd>
<dt><a href="http://www.sans.org/top20/?portal=e5dfc06fea68d67f5756dfaef9438fba" target="_blank">SANS Top-20 2007 Security Risks </a></dt>
<dd><a href="http://www.w3schools.com/site/site_security.asp" target="_blank">2007 Annual Update</a></dd>
<dt><a href="http://www.w3schools.com/site/site_security.asp" target="_blank">Web Security</a> </dt>
<dd>W3Schools.org. An introduction. </dd>
<dt><a href="http://www.scmagazine.com/us/grouptest/details/d16ea758-1d8a-4609-a043-ae2e74f41805/web-security-2003/" target="_blank">Web Security</a></dt>
<dd>By Geoff Marshall. SC magazine. Account required to read the white papers.</dd>
<dt> </dt>
</dl>
</div>
<p>Web site security is a full time job because your web site is public for every hour of every day.</p>
<blockquote><p>&#8220;The heart of the issue is that if untrusted content can be introduced into a dynamic page, neither the server nor the client has enough information to recognize that this has happened and take protective actions.&#8221;</p>
<blockquote><p><a href="http://www.cert.org/tech_tips/malicious_code_mitigation.html" target="_blank">Understanding Malicious Content Mitigation for Web Developer</a> (CERT 2000)</p></blockquote>
</blockquote>
<p>Use this checklist to lesson the impact of malicious activity in cyberspace:</p>
<h3>Assess the risks (<a href="http://www.adobe.com/devnet/server_archive/articles/design_secure_webapps.html" target="_blank">Gin, 2008</a>)</h3>
<ul>
<li>Identify protected resources such as web pages, databases, employee information, and credit card data.</li>
<li>Assign relative values to each to identify which are priorities to protect with your time and tools.</li>
<li>Identify possible attackers such as hackers, ex-employees, spies, or government agencies.</li>
<li>Estimate the relative frequency of attackers.</li>
</ul>
<h3>Code with security in mind.</h3>
<ol>
<li><strong>Assess the risks of using scripts and forms.</strong></li>
<li><strong>Stay abreast of security vulnerabilities via <a href="http://www.cert.org/contact_cert/certmaillist.html%20" target="_blank">CERT</a></strong></li>
<li><strong>Set the character encoding (meta tag) to ISO</strong>
<ul>
<li>&lt; meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=IOS-8859-1&#8243; &gt;</li>
</ul>
</li>
<li><strong>Put code/scripts in a separate directory outside the document root.</strong> (<a href="http://oldsocs.berkeley.edu:7309/web_sec/page17.html" target="_blank">Berkman 2003</a>)
<ul>
<li>But do not put general purpose interpreters, such as perl, PHP, or shells, in the cgi-bin directory.</li>
<li>Store database account name and password in a file outside the web directory tree.</li>
</ul>
</li>
<li><strong>Recode dynamically generated pages to validate output.</strong>
<ul>
<li>Code sites so they work with or without JavaScript.
<ul>
<li>Because JavaScripts can introduce insecurities, some uses keep it turned off in their browsers. Tools like <a href="http://noscript.net/" target="_blank">NoScript</a> make it easy to turn it on when viewing a trusted site.</li>
</ul>
</li>
<li>&#8220;Any server that creates web pages by inserting dynamic data into a template should check to make sure that the data to be inserted does not contain any special characters (e.g., &#8220;&lt;&#8221;). If the inserted data contains special characters, the user&#8217;s web browser will mistake them for HTML markup.&#8221; (<a href="http://www.cert.org/tech_tips/malicious_code_mitigation.html">CERT</a> 2000)</li>
</ul>
</li>
<li><strong>Validate form data and disallow html and scripts in form fields.</strong>
<ul>
<li>Limit field data to what is needed and no more. For instance, if you ask for a person&#8217;s age in a form field, only accept numbers with 2 digits rather than any amount of any characters. In a name field, accept only a string of letters, periods, and hyphens. Apostrophes may allow SQL injections.</li>
<li>Validate/filter form data locally (during the output process) before it is rendered as part of the dynamic page.</li>
<li>If you validate form data with JavaScript, revalidate with your server script (in case JavaScript was turned off in the browser).</li>
<li>Don&#8217;t allow html tags in form textarea or input fields.</li>
<li>Add Captcha Image security functions to keep spambots from filling in your forms.</li>
</ul>
</li>
<li><strong>Examine and filter data stored in cookies.</strong>
<ul>
<li>It is a good practice to save the session data on the server, and use cookies or hidden variables just to pass a session identifier. (<a href="http://oldsocs.berkeley.edu:7309/web_sec/page35.html" target="_blank">Berkman 2003</a>)</li>
<li>Cookie data can be stolen by other web pages so don&#8217;t store sensitive data in them.</li>
</ul>
</li>
<li><strong>Don&#8217;t send scripts or personal form data via link tags. </strong>
<ul>
<li><a href="http://www.cert.org/advisories/CA-2000-02.html" target="_blank">Malicious HTML Tags Embedded in Client Web Requests</a>:  CERT® Advisory 2000</li>
<li>Send forms with method=&#8221;post&#8221; rather than method=&#8221;get&#8221; as much as possible.<br />
(<a href="http://oldsocs.berkeley.edu:7309/web_sec/page17.html" target="_blank">Berkman 2003</a>)</p>
<ul>
<li>With POST the form input is passed via standard input to the application; best for logged in sessions.</li>
<li>With GET the form input is added to the URL which is visible to users; so don&#8217;t use this option for sending personal data.</li>
</ul>
</li>
<li>Don&#8217;t pass important information via hidden variables. For instance, a BuyNow button that shows pricing in a hidden field can easily be copied, altered, and sent back so a purchase is made with the wrong pricing! Read <a href="http://archives.cnn.com/2000/TECH/computing/02/04/shop.glitch.idg/" target="_blank">Shopping-cart glitch could give hackers a discount</a>: Ann Harison CNN.com 2000.</li>
</ul>
</li>
<li><strong>Require users to create strong passwords.</strong>
<ul>
<li>And display errors to login/authentication that do not give away  missing information.</li>
<li> To prevent another user from using the back button to relog in as the previous user, create a random key for each login page, save it on the server and pass it to the browser in a hidden variable, and only allow the random key to be used once to log on. (<a href="http://oldsocs.berkeley.edu:7309/web_sec/page38.html" target="_blank">Berkman 2003</a>)</li>
<li>Limit the number of failed login attempts.</li>
<li>Prohibit shared accounts.</li>
<li>Don&#8217;t use generic account names like tester, guest, sysadmin, admin, etc.</li>
</ul>
</li>
<li><strong>Don&#8217;t list script errors on web pages that are launched.</strong>
<ul>
<li>They give away the vulnerabilities of the scripts.</li>
</ul>
</li>
<li><strong>For PHP Scripts </strong>
<ul>
<li>Upgrade to PHP 5.2 to eliminate common vulnerabilities. some of these include:
<ul>
<li>PHP Remote File Include</li>
<li><a href="http://sqlsecurity.com/FAQs/SQLInjectionFAQ/tabid/56/Default.aspx" target="_blank">SQL Injection</a> where a CGI inserts  input data into a string which is then submitted to an SQL server. See a <a href="http://oldsocs.berkeley.edu:7309/web_sec/page61.html" target="_blank">quick example</a> from Berkman.</li>
<li>Cross-Site Scripting (XSS) where the attacker tricks the victim into clicking on a URL containing a harmful script.</li>
<li>Cross-site request forgeries (CSRF)</li>
</ul>
</li>
<li>Consider using methods like <a href="http://www.suphp.org/Home.html" target="_blank">SUPHP</a> to set permissions to read only.
<ul>
<li>This method can use an .htaccess file to handle permissions for complex database-driven web applications.</li>
<li>Read more: <a href="http://itc.virginia.edu/server/web/php/suphp.html" target="_blank">Secure PHP Pages with SUPHP</a>: University of Virginia.</li>
<li>PHP&#8217;s security functions can all be turned on but most open source web applications cannot run with them on.</li>
</ul>
</li>
<li><span style="color: #cc0000;">Remove all .phps or php.txt files from the server.</span></li>
<li>Remove automatically generated directory listings.</li>
<li>Create directories outside the server tree for session and sensitive data.</li>
</ul>
</li>
<li><strong>For SQL databases</strong>, read <a href="http://www.sans.org/top20/?portal=e5dfc06fea68d67f5756dfaef9438fba" target="_blank">Sans.org&#8217;s Top 20 List</a>.</li>
<li><strong>Don&#8217;t list email addresses in web pages.</strong>
<ul>
<li>Use forms instead.</li>
</ul>
</li>
</ol>
<h3>Test your scripts for vulnerabilities</h3>
<ol>
<li>Many<br />
older scripts, free downloadable scripts, and samples scripts from textbooks do not adhere to security best practices, so test your site to see which scripts need attention. Try these tools:</p>
<ul>
<li><a href="http://sectools.org/web-scanners.html" target="_blank">OWASP Testing Guide </a></li>
<li><a href="http://sectools.org/web-scanners.html">Top 10 Web Vulnerability Scanners</a></li>
</ul>
</li>
<li>Removed vulnerable scripts from the server. <a href="http://www.w3.org/Security/faq/wwwsf4.html#CGI-Q5" target="_blank">W3.org provides a list of problem CGI scripts.</a></li>
<li>Measure your skill using the <a href="http://www.sans.org/gssp/" target="_blank">GSSP</a> or other security exams and fill commit to regularly learning new security skills.<a href="http://www.sans.org/gssp/" target="_blank"></a></li>
</ol>
<h3>Create strong passwords</h3>
<ul>
<li><a href="https://www.grc.com/passwords.htm" target="_blank">Perfect Passwords</a>: GRC&#8217;s Ultra High Security Password Generator</li>
<li><a href="https://www.goodpassword.com/password-help.htm" target="_blank">Password Dos and Don&#8217;ts</a>: Bytes Interactive</li>
</ul>
<h3>Manage passwords securely</h3>
<ol>
<li>Read about <a href="http://www.psynch.com/docs/password-management-best-practices.html" target="_blank">Password Management Best Practices</a>: MTech. 2008. And <a href="http://whitepapers.scmagazine.com" target="_blank">Password Management vs. Single Sign-On</a>.</li>
<li>Management options include:</li>
</ol>
<ul>
<li>
<ul>
<li>Desktop software</li>
<li>Browser extension</li>
<li>Hosted online service</li>
<li> Single Sign On (SSO)</li>
</ul>
</li>
</ul>
<h3>Host your web site with a reliable company that provides the following services:</h3>
<ol>
<li>Secure server room with limited access to staff and outsiders.</li>
<li>Secure credit card transaction when purchasing the account.
<ul>
<li>Is the transaction as safe if handled manually by a human?</li>
</ul>
</li>
<li>Strong password generation for accounts.</li>
<li>Daily backup of files and databases.</li>
<li>Immediate technical support to troubleshoot security issues.</li>
<li>Investment in finding the culprit (reporting to police)</li>
</ol>
<p><strong>If using e-commerce then read </strong></p>
<ul>
<li> Encrypt transmission of cardholder data<br />
and sensitive information across public networks</li>
<li> Maintain a Vulnerability Management<br />
Program</li>
<li> Use and regularly update anti-virus<br />
software</li>
<li> Develop and maintain secure systems and<br />
applications</li>
<li>Implement Strong Access Control<br />
Measures</li>
<li> Restrict access to data by business need-to-<br />
know</li>
<li> Assign a unique ID to each person with computer access</li>
<li> Restrict physical access to cardholder data</li>
</ul>
<p>Regularly Monitor and Test Networks Track and monitor all access to network resources and cardholder data</p>
<p>Regularly test security systems and processes</p>
<p>Maintain an Information Security Policy Maintain a policy that addresses information security</p>
<p><strong>If you&#8217;ve built your own server, use the Robots Exclusion to protect specific directories.</strong></p>
<ul>
<li><a href="http://www.robotstxt.org/wc/robots.html" target="_blank">Robotstxt.org</a>: Helping promote the Robot Exclusion Standard.</li>
<li>Disable web servers that are not in use because unused, unpatched web servers contributed greatly to spread of <a href="http://www.cert.org/advisories/CA-2001-19.html" target="_blank">Code Red</a>.</li>
</ul>
<h3>Transfer files with a secure connection</h3>
<ul>
<li>Encrypted WiFi connection
<ul>
<li>View your computer&#8217;s vulnerabilities with <a href="https://grc.com/x/ne.dll?bh0bkyd2" target="_blank">ShieldsUP! </a>
<ul>
<li>The Internet&#8217;s quickest, most popular, reliable and trusted, free Internet security checkup and information service. Check your system here, and begin learning about using the Internet safely.</li>
</ul>
</li>
</ul>
</li>
<li>Secure FTP (SFTP) or Secure Shell</li>
<li>Logout when idle.</li>
</ul>
<h3>Use a Secure Socket Layer (SSL) Certificate when setting up online transactions.</h3>
<ul>
<li>SSL encrypts sessions between the browser and web server.</li>
<li><a href="http://www.openssl.org/docs/HOWTO/certificates.txt" target="_blank">Generating a self-signed SSL certificate</a>
<ul>
<li>Rather than purchase a &#8220;trusted&#8221; certificate, generate your own. It&#8217;s secure, but may not be trusted by your visitors.</li>
</ul>
</li>
</ul>
<h3>Browse and view media files with security features turned on.</h3>
<ul>
<li><a href="http://www.us-cert.gov/reading_room/securing_browser/#Mozilla_Firefox" target="_blank">Securing Your Web Browser</a>:<br />
Will Dormann and Jason Rafail 2008.</li>
<li>Example of a browser insecurity
<ul>
<li><a target="_blank">Mozilla browsers fail to properly handle images</a>: Vulnerability Note VU#879056. The United States Computer Emergency Readiness Team (US-CERT) is a partnership between the Department of Homeland Security and the public and private sectors. Established in 2003 to protect the nation&#8217;s Internet infrastructure, US-CERT coordinates defense against and responses to cyber attacks across the nation.</li>
</ul>
</li>
</ul>
<h3>Write a sound security policy.</h3>
<p>Read and use <a href="http://www.the-dma.org/privacy/creating.shtml" target="_blank">How to Construct Your Privacy Policy</a>:<br />
Direct Marketing Association.</p>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/web-security-checklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Producing Accessible Forms</title>
		<link>http://pamvanlonden.com/producing-accessible-forms/</link>
		<comments>http://pamvanlonden.com/producing-accessible-forms/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 18:51:05 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Forms]]></category>
		<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://pamvanlonden.com/?p=835</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/producing-accessible-forms/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Introduction Goals of forms and collecting user data Most web sites are built to provide information to visitors. When site owners want to hear from visitors; they make it easy by providing forms which ask questions related to the data they want to collect. Perhaps it&#8217;s just a simple message, such as, &#8220;How did you [...]]]></description>
			<content:encoded><![CDATA[<h3><a href="javascript:intro9.slideit()">Introduction</a></h3>
<div id="intro9" class="hiddenbox">
<h4>Goals of forms and collecting user data</h4>
<p>Most web sites are built to provide information to visitors. When site owners want to hear from visitors; they make it easy by providing forms which ask questions related to the data they want to collect. Perhaps it&#8217;s just a simple message, such as, &#8220;How did you hear about us?&#8221; Or, &#8220;Did you find what you were looking for?&#8221; Or, &#8220;Contact us and we&#8217;ll contact you.&#8221;</p>
<p>Collecting data from your visitors involves adhering to etiquette, securing form data while in transit, and sharing or not sharing data with third parties, and blocking spam messages. In general, follow these guidelines:</p>
<ul>
<li>Make forms accessible so all visitors can send you a message.</li>
<li>Provide helpful messages and instructions for new internet users.</li>
<li>Use error checking so that form data is clean before sending.</li>
<li>Block automatic spambotsfrom using the form and cluttering up the receiver&#8217;s email inbox.</li>
<li>Notify visitors of your policies regarding their personal data.</li>
</ul>
</div>
<p><script type="text/javascript">// <![CDATA[
var intro9=new animatedcollapse("intro9", 500, true)
// ]]&gt;</script></p>
<h4><a href="javascript:intro9part2.slideit()">Making Accessible Forms</a></h4>
<div id="intro9part2" class="hiddenboxh4">
<div class="floatingcontainer">
<h4>Readings</h4>
<dl>
<dt><a href="http://www.websemantics.co.uk/tutorials/accessible_forms/" target="_blank">Accessible forms: Guidelines, examples and accessible JavaScript tricks</a></dt>
<dd>Mike Foskett, Web Semantics. 2006.</dd>
<dt><a href="http://www.webstandards.org/learn/tutorials/accessible-forms/" target="_blank">Accessible HTML/XHTML Forms</a></dt>
<dd>Ian Lloyd, May 2004. The Web Standards Project. Beginning, Intermediate, and Advanced tutorials. </dd>
<dt><a href="http://www.thesitewizard.com/archive/phptutorial2.shtml" target="_blank">Form Validation, Disabling Browser Caching, Embedding HTML Code</a></dt>
<dd>Christopher Heng, The Site Wizard</dd>
<dt><a href="http://www.ngenworks.com/blog/detail/form_field_focus_with_unobtrusive_javascript/" target="_blank">Form field focus with unobtrusive JavaScript</a></dt>
<dd>Joey Marchy. 2006. In the Garage. </dd>
<dt><a href="http://dynamicdrive.com/dynamicindex16/index.html" target="_blank">Dynamic Drive&#8217;s Form Effects</a></dt>
<dd>Updated regularly.</dd>
</dl>
</div>
<p>Use these various tags to improve keyboard and screenreader access in forms. Read more in <a href="http://www.webaim.org/techniques/forms/" target="_blank">Creating Accessible Forms</a>.</p>
<ul>
<li>fieldset</li>
<li>legend</li>
<li>label with &#8220;for&#8221; defined</li>
<li>tabindex</li>
<li> <a href="http://en.wikipedia.org/wiki/Access_keys" target="_blank">accesskey</a>
<ul>
<li><a href="http://www.alistapart.com/articles/accesskeys/" target="_blank">Styling with pseudo-elements</a></li>
</ul>
</li>
<li><a href="http://www.ngenworks.com/blog/detail/form_field_focus_with_unobtrusive_javascript/" target="_blank">focus</a></li>
</ul>
</div>
<p><script type="text/javascript">// <![CDATA[
var intro9part2=new animatedcollapse("intro9part2", 500, true)
// ]]&gt;</script></p>
<h4><a href="javascript:intro9part3.slideit()">Collecting visitor data</a></h4>
<div id="intro9part3" class="hiddenboxh4">
<ul>
<li>By email
<ul>
<li>FormMail.php, which resides on the ONID server, will allow your visitors to send data to your OSU email address.
<ul>
<li>You can download a version of FormMail.php to an off-campus server running PHP software.</li>
</ul>
</li>
<li><a href="http://www.thesitewizard.com/archive/feedbackphp.shtml" target="_blank">Feedback Form Script</a> is much simpler and allows you to build in what you want.</li>
</ul>
</li>
<li> With .htaccess files.
<ul>
<li>Note that these options were written for the host vendor&#8217;s server configuration and may not work for ONID or ENGR servers. They do explain many uses for .htaccess, however.</li>
<li><a href="http://javascriptkit.com/howto/htaccess.shtml" target="_blank">Comprehensive guide to .htaccess </a></li>
</ul>
</li>
<li>With Cookies(CS 295)
<ul>
<li>See the next page.</li>
</ul>
</li>
<li>Write to a Database(CS 295)
<ul>
<li>See the next week&#8217;s work.</li>
</ul>
</li>
</ul>
</div>
<p><script type="text/javascript">// <![CDATA[
var intro9part3=new animatedcollapse("intro9part3", 500, true)
// ]]&gt;</script></p>
<h4><a href="javascript:intro9part4.slideit()">Which format will the web host/server allow?</a></h4>
<div id="intro9part4" class="hiddenboxh4">
<p>Scripts written in one of these three languages are usually provided by a web host. Getting information from their support staff about the path to the script can be difficult, and modifying the refer line of the file is generally a simple matter.</p>
<ul>
<li><strong>CGI scripts </strong>
<ul>
<li><a href="http://www.scriptarchive.com/formmail.html" target="_blank">FormMail</a> is a generic HTML form to e-mail gateway that parses the results of any form and sends them to the specified users. This script has many formatting and operational options, most of which can be specified within each form, meaning you don&#8217;t need programming knowledge or multiple scripts for multiple forms. Previous versions have had security problems.</li>
</ul>
</li>
<li><strong>Perl scripts </strong>
<ul>
<li><a href="http://www.scriptarchive.com/formmail.html" target="_blank">FormMail</a> available in a Perl (.pl) format.</li>
</ul>
</li>
<li><strong>PHP scripts </strong>(3 options)
<ul>
<li>Easy to <a href="http://pamvanlonden.com/php-scripts/" target="_blank">make your own</a>. See <a href="http://dmcinsights.com/php/" target="_blank">PHP for the World Wide Web</a> chapter 3 to get started. Note <a href="http://www.dmcinsights.com/phorum/read.php?f=5&amp;i=915&amp;t=915" target="_blank">corrections</a> to textbook scripts.</li>
<li>The ONID server provides use of FormMail.php. To use it, tag a form with the following path:
<ul>
<li>&lt;form action=&#8221;http://oregonstate.edu/tools/formmail.php&#8221; method=&#8221;post&#8221;&gt;</li>
<li>This will only work if the recipient line goes to an on-campus email address.</li>
<li>Use <a href="http://www.dtheatre.com/scripts/formmail_doc.php" target="_blank">Jack&#8217;s Script&#8217;s tutorial</a> to properly set up the hidden fields.</li>
</ul>
</li>
<li>Download and install a version of formmail.php (several versions of the same name exist)
<ul>
<li><a href="http://www.dtheatre.com/scripts/formmail_doc.php#recommended_variables">Jack&#8217;s Scripts (perhaps out of date)<br />
</a></li>
<li><a href="http://www.tectite.com/formmailpage.php" target="_blank">Tectite</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<p><script type="text/javascript">// <![CDATA[
var intro9part4=new animatedcollapse("intro9part4", 500, true)
// ]]&gt;</script></p>
<h4><a href="javascript:intro9part5.slideit()">Provide Security</a></h4>
<div id="intro9part5" class="hiddenboxh4">
<p>Read through the <a title="Web Security Checklist" href="http://pamvanlonden.com/web-security-checklist/">Web Security Checklist</a> to get an idea how complicated it is to keep forms and web sites secure. Pay close attention to &#8220;Code with security in mind&#8221;, step 6.</div>
<p><script type="text/javascript">// <![CDATA[
var intro9part5=new animatedcollapse("intro9part5", 500, true)
// ]]&gt;</script></p>
<h4><a href="javascript:intro9part6.slideit()">Tell visitors how you will use their personal data</a></h4>
<div id="intro9part6" class="hiddenboxh4">
<p>In a separate page or message on your form page, tell visitors why you want to hear from the, what you&#8217;ll do with their personal data, and where it will be stored. Will you sell it to third parties? Leave it laying around in your email, or store it in a database so you can send them a newsletter? Use the DMA&#8217;s form to generate a policy for your web site. Edit the results to meet your needs.</p>
<dl>
<dt><a href="http://www.the-dma.org/privacy/creating.shtml" target="_blank">How to Construct Your Privacy Policy</a></dt>
<dd>Direct Marketing Association.</dd>
</dl>
</div>
<p><script type="text/javascript">// <![CDATA[
var intro9part6=new animatedcollapse("intro9part6", 500, true)
// ]]&gt;</script></p>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/producing-accessible-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verifying/validating data with JavaScripts</title>
		<link>http://pamvanlonden.com/verifyingvalidating-data-with-javascripts/</link>
		<comments>http://pamvanlonden.com/verifyingvalidating-data-with-javascripts/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 15:30:54 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://i-dev.us/verifyingvalidating-data-with-javascripts/</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/verifyingvalidating-data-with-javascripts/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Readings 250 HTML and Web Design Secrets Molly E Holzschlag. Wiley Publishing. 2004. Page 319. Before data is sent to the server with a server scripting language, such as PHP, user data can be checked for accuracy. Many JavaScripts can help the visitor provide clean data before final data is submitted by the server-side script. [...]]]></description>
			<content:encoded><![CDATA[<div class="floatingcontainer">
<h4>Readings</h4>
<dl>
<dt><u>250 HTML and Web Design Secrets</u></dt>
<dd>Molly E Holzschlag. Wiley Publishing. 2004. Page 319.</dd>
</dl>
</div>
<p>Before data is sent to the server with a server scripting language, such as PHP, user data can be checked for accuracy. Many JavaScripts can help the visitor provide clean data before final data is submitted by the server-side script. </p>
<p>To improve the kind of data your forms send, build in validation functions for: </p>
<ul>
<li>Email addresses</li>
<li>web site addresses</li>
<li>zip codes</li>
<li>states</li>
<li>phone numbers</li>
<li>login userID and passwords </li>
</ul>
<h3>Resources</h3>
<p>Review and try these options to create solutions for your forms: </p>
<dl>
<dt><a href="http://javascript.internet.com/forms/val-no-alert.html" target="_blank">Validation (No Alert) </a></dt>
<dd>JavaScript. Nice one! validates the essentials without an alert box; uses red text on the same page instead.</dd>
<dt> <a href="http://www.netmechanic.com/news/vol5/html_no16.htm" target="_blank">Avoid Duplicate Form Submissions</a></dt>
<dd>Larisa Thomason,<br />
    Senior Web Analyst,<br />
    NetMechanic, Inc. </dd>
<dt><a href="http://dynamicdrive.com/dynamicindex16/index.html" target="_blank">Form Effects</a></dt>
<dd>Dynamic Drive. DHTML solutions. </dd>
<dt><a href="http://javascript.internet.com/forms/auto-drop-down.html" target="_blank">Contextual forms</a></dt>
<dd>Auto Drop Down menu changes based on first selection. <a href="http://javascript.internet.com/forms/country.html" target="_blank">Country Chooser</a> is similar. </dd>
<dt><a href="http://javascript.internet.com/forms/auto-tab.html" target="_blank">Auto Tab</a></dt>
<dd>Adds usability (typing ease) to forms with standard inputs, such as phone numbers, social security numbers, area codes, etc. </dd>
<dt><a href="http://javascript.internet.com/forms/check-cap-locks.html" target="_blank">Check Cap Locks</a> </dt>
<dd>This JavaScript function will let the user know his Caps Lock is on and about the potential for error. </dd>
<dt><a href="http://javascript.internet.com/forms/date-selection-form.html" target="_blank">Date Selection Form</a> </dt>
<dd>Another nifty JavaScript.</dd>
<dt><a href="http://javascript.internet.com/forms/dictionary.html" target="_blank">Dictionary and Thesaurus</a></dt>
<dd>JavaScript that links to Ask Jeeves. </dd>
<dt><a href="http://javascript.internet.com/forms/initial-caps.html" target="_blank">Initial Caps</a></dt>
<dd>Changes lower case to upper and lower case. </dd>
<dt><a href="http://javascript.internet.com/forms/no-html.html" target="_blank">No HTML</a> </dt>
<dd>Use JavaScript to ensure that visitors do not type in HTML entries. </dd>
<dt><a href="http://javascript.internet.com/forms/password-verifier.html" target="_blank">Password Verifier</a> </dt>
<dd>They get an error message telling them to re-enter the passwords if they do not match. </dd>
<dt><a href="http://javascript.internet.com/forms/smut-engine.html" target="_blank">Smut Engine </a></dt>
<dd>Turns profane user input into special characters.</dd>
<dt><a href="http://javascript.internet.com/forms/submit-changer.html" target="_blank">Submit Changer</a></dt>
<dd>Provides popup note and submit button label change, to keep users for resubmitting accidentally. </dd>
<dt><a href="http://javascript.internet.com/forms/upload-filter.html" target="_blank">Upload Filter</a></dt>
<dd>Alters user who attempts to upload file type that is not allowed. </dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/verifyingvalidating-data-with-javascripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Security Options</title>
		<link>http://pamvanlonden.com/web-security-options/</link>
		<comments>http://pamvanlonden.com/web-security-options/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 15:30:00 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://i-dev.us/web-security-options/</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/web-security-options/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Readings Web Security W3Schools.org. An introduction. Web Security By Geoff Marshall. SC magazine. 2003. Prevent Web servers from identifying themselves Brien M. Posey. Tech Republic. 2004. PHP and MySQL for the World Wide Web Larry Ullman. Visual Quickstart Guide. Peachpit Press. Chapter 8; a bit advanced. Open Web Application Security Project OWASP.org. Top 10 Vulnerabilities in [...]]]></description>
			<content:encoded><![CDATA[<div class="floatingcontainer">
<h4>Readings</h4>
<dl>
<dt><a href="http://dmcinsights.com/php/" target="_blank"></a><a href="http://www.w3schools.com/site/site_security.asp" target="_blank">Web Security</a> </dt>
<dd>W3Schools.org. An introduction. </dd>
<dt><a href="http://www.scmagazine.com/us/grouptest/details/d16ea758-1d8a-4609-a043-ae2e74f41805/web-security-2003/" target="_blank">Web Security</a></dt>
<dd>By Geoff Marshall. SC magazine. 2003. </dd>
<dt><a href="http://articles.techrepublic.com.com/5100-1035_11-5153263.html" target="_blank">Prevent Web servers from identifying themselves </a></dt>
<dd>Brien M. Posey. Tech Republic. 2004. </dd>
<dt><a href="http://dmcinsights.com/php/" target="_blank">PHP and MySQL for the World Wide Web</a></dt>
<dd>Larry Ullman. Visual Quickstart Guide. Peachpit Press. <strong>Chapter 8; a bit advanced. </strong></dd>
<dt><a href="http://www.owasp.org/documentation/topten.html" target="_blank">Open Web Application Security Project</a></dt>
<dd><a href="http://www.owasp.org/documentation/topten.html" target="_blank"></a>OWASP.org. Top 10 Vulnerabilities in Web Applications. November 2006.<strong></strong></dd>
</dl>
</div>
<h3>Important exercise</h3>
<p>Please take the time to run all of the ShieldsUp tests from the link below. You will begin to learn the language of web security by seeing how vulnerable your machine is. Macintosh users (viewing from off campus) will be pleasantly surprised. Windows users&#8230;complain to Bill Gates.</p>
<dl>
<dt><a href="https://grc.com/x/ne.dll?bh0bkyd2" target="_blank">ShieldsUP! </a></dt>
<dd>The Internet&#8217;s quickest, most popular, reliable and trusted, free Internet security checkup and information service. Check your system here, and begin learning about using the Internet safely. <span style="color: #ff0000;">NOTE: Don&#8217;t use the email spam function; I believe it gathers your email address to use maliciously.</span></dd>
<dt> <a href="http://security.symantec.com/sscv6/home.asp?langid=ie&amp;venid=sym&amp;plfid=10&amp;pkj=JCQTLSIVFWMFKPXKBQW&amp;bhcp=1">Symantec</a></dt>
<dd> Symantec Security Check tests your computer&#8217;s exposure to a wide range of online threats. It&#8217;s free and an effective tool that helps determine your Internet security needs.</dd>
</dl>
<h3>Resources</h3>
<p>If you&#8217;ve built your own server, use the Robots Exlusion to protect specific directories.</p>
<dl>
<dt><a href="http://www.robotstxt.org/wc/robots.html" target="_blank">Robotstxt.org</a></dt>
<dd>Helping promote the Robot Exlusion Standard.</dd>
</dl>
<p>Post other security fixes you come across on this week&#8217;s Forum.</p>
<h3>SSL Certificates</h3>
<dl>
<dt><a href="http://www.openssl.org/docs/HOWTO/certificates.txt" target="_blank">Generating a self-signed SSL certificate</a></dt>
<dd>Rather than purchase a &#8220;trusted&#8221; certificate, generate your own. It&#8217;s secure, but may not be trusted by your visitors.</dd>
<dt></dt>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/web-security-options/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customized search</title>
		<link>http://pamvanlonden.com/customized-search/</link>
		<comments>http://pamvanlonden.com/customized-search/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 15:29:14 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://i-dev.us/customized-search/</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/customized-search/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Add a customized search field to your site: Customized OSU Searches A customized search selects only the directory (and sub-directories) of this local site. Google Customer Search For individual and business web sites.]]></description>
			<content:encoded><![CDATA[<p>Add a customized search field to your site:</p>
<dl>
<dt><a title="OSU options for adding search to an OSU affiliated site." href="http://oregonstate.edu/cws/docs/faqcustomsearch" target="_blank">Customized OSU Searches</a> </dt>
<dd>A customized search selects only the directory (and sub-directories) of this local site.</dd>
<dt><a href="http://www.google.com/cse/" target="_blank">Google Customer Search</a></dt>
<dd>For individual and business web sites.</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/customized-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Scripts</title>
		<link>http://pamvanlonden.com/php-scripts/</link>
		<comments>http://pamvanlonden.com/php-scripts/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 15:28:19 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://i-dev.us/php-scripts/</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/php-scripts/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Scripts can be placed in web pages to perform actions after an event occurs, such as submitting form data. Many scripts exist to handle various tasks and some are easy to customize for your unique purposes. Use a textbook, online tutorials, and other readings and resources to write a simple script. Download the chapter scripts [...]]]></description>
			<content:encoded><![CDATA[<p> Scripts can be placed in web pages to perform actions after an event occurs, such as submitting form data. Many scripts exist to handle various tasks and some are easy to customize for your unique purposes. </p>
<p>Use a textbook, online tutorials, and other readings and resources to write a simple script. </p>
<p>Download the chapter scripts from the following text web site to see how form data can be validated with .php. </p>
<dl>
<dt><a href="http://www.dmcinsights.com/phpmysql3/" target="_blank">PHP 6 and MySQL 5: Visual QuickPro Guide</a>, 3rd Ed.</dt>
<dd>Larry Ullman. Peachpit Press. 2008. <a href="http://www.dmcinsights.com/phpmysql3/errata.php" target="_blank">Errata</a></dd>
</dl>
<p>Note: OSU restricts the use of SSL certificates on the ONID servers.</p>
<h4>Resources</h4>
<dl>
<dt><a href="http://www.hotscripts.com/cgi-bin/search.cgi?bool=AND&amp;query=login&amp;catid=2" target="_blank"></a><a href="http://www.hotscripts.com/cgi-bin/search.cgi?bool=AND&amp;query=login&amp;catid=2" target="_blank">Hotscripts.com</a></dt>
<dd>Long list of login scripts to choose from. </dd>
<dt><a href="http://php.resourceindex.com/Complete_Scripts/Form_Processing/" target="_blank">Form Processor Scripts</a></dt>
<dd>For PHP at Scripts.com. <a href="http://php.resourceindex.com/Complete_Scripts/Form_Processing/" target="_blank"> </a></dd>
<dt><a href="http://phpbuilder.net/snippet/" target="_blank">PHP Builder</a></dt>
<dd>More code snippets.</dd>
<dt><a href="http://www.evolt.org/article/PHP_Login_Script_with_Remember_Me_Feature/17/60265/index.html" target="_blank">PHP Login Script with Remember Me Feature</a></dt>
<dd>Excellent tutorial with code to copy.</dd>
<dt><a href="http://www.x-code.com/vdaemon/samples/registration.php" target="_blank">Registration Form Sample</a> </dt>
<dd>PHP. VDaemon from X-Code.com. Validates userID and password against a database, plus email format, and displays errors in red on the same page. </dd>
<dt><a href="http://simon.incutio.com/archive/2003/06/17/theHolyGrail" target="_blank">Easier form validation with PHP </a></dt>
<dd>Simon Willison&#8217;s Weblog. See the demo; it displays error messages on the page and adds red ! marks. </dd>
<dt><a href="http://www.phys.uu.nl/%7Elenarts/formev.html" target="_blank">Form and validation</a></dt>
<dd>PHP. Ben Lenarts, 2004.</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/php-scripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Baking Cookies</title>
		<link>http://pamvanlonden.com/baking-cookies/</link>
		<comments>http://pamvanlonden.com/baking-cookies/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 15:27:39 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://i-dev.us/baking-cookies/</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/baking-cookies/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Cookies are a way for the server to store information about a visitor on the visitor&#8217;s machine, so it can remember their name, needs, and login information during a visit. It&#8217;s like wearing a name tag. Read: How to Create and Use Cookies in PHP Set, Retrieve and Delete Cookies using PHP. The Site Wizard. [...]]]></description>
			<content:encoded><![CDATA[<p>Cookies are a way for the server to store information about a visitor on the visitor&#8217;s machine, so it can remember their name, needs, and login information during a visit. It&#8217;s like wearing a name tag. Read:</p>
<dl>
<dt><a href="http://www.thesitewizard.com/php/set-cookies.shtml" target="_blank">How to Create and Use Cookies in PHP</a></dt>
<dd>Set, Retrieve and Delete Cookies using PHP. The Site Wizard. </dd>
</dl>
<p><strong>Examples</strong></p>
<dl>
<dt><a href="http://oregonstate.edu/instruct/cs295/demos/bakecookies/cookie_form.htm" target="_blank">Add to Contact List </a></dt>
<dd>This form first asks for the name of the person entering data, to capture it in a cookie. This username is displayed upon hitting the return key and shows up again in the confirmation page. Uses some of the Negrino/Smith examples at the right. Note that other user data IS using a database, where the cookie IS NOT. </dd>
<dt><a href="http://oregonstate.edu/instruct/cs295/demos/bakecookies/cookie.htm?nameField=messin+around" target="_blank">Set a JavaScript cookie based on a form field</a></dt>
<dd>Uses some of the Negrino/Smith examples at the right. </dd>
<dt><a href="http://oregonstate.edu/instruct/cs295/demos/bakecookies/stylechanger.php" target="_blank">Page color changes</a></dt>
<dd>This form and cookie comes from the older PHP for the World Wide Web book and was updated by Ben Jansen of OSU. </dd>
</dl>
<p>If you are already using a database to collect data, then  practice making, using, and deleting cookies with PHP.</p>
<h4><strong>Examples</strong></h4>
<dl>
<dt><a href="http://oregonstate.edu/instruct/cs295/demos/bakecookies/html/" target="_blank">Trouts R Us </a></dt>
<dd>PHP and MySQL text, pages 235 to 254. <a href="http://www.dmcinsights.com/phpmysql/scripts.php" target="_blank">Download Chapters 5 and 6</a> to try the code on your server. </dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/baking-cookies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Browser Detection</title>
		<link>http://pamvanlonden.com/browser-detection/</link>
		<comments>http://pamvanlonden.com/browser-detection/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 15:27:17 +0000</pubDate>
		<dc:creator>Pam Van Londen</dc:creator>
				<category><![CDATA[Knowledge Base]]></category>
		<category><![CDATA[User Data]]></category>

		<guid isPermaLink="false">http://i-dev.us/browser-detection/</guid>
		<description><![CDATA[<a href="http://pamvanlonden.com/browser-detection/"><img align="left" hspace="5" width="150" height="150" src="http://pamvanlonden.com/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Readings DHTML and CSS For the World Wide Web, 3rd Ed Chapter 11. See how the code for browser detection works. CSS hacks &#38; browser detection Webcredible Ltd. 2004. Browser Compatibility Workshop BrowserHawk JavaScript Tip: Browser Detection And Redirection NetMechanic To help ensure your visitors get the best experience at your site&#8211;including being able to [...]]]></description>
			<content:encoded><![CDATA[<div class="floatingcontainer">
<h4>Readings</h4>
<dl>
<dt><a href="http://webbedenvironments.com/dhtml/" target="_blank">DHTML and CSS For the World Wide Web, 3rd Ed</a></dt>
<dd>Chapter 11. <a href="http://webbedenvironments.com/dhtml/code/11_LearningAboutEnvironment/BrowserDetection/index.html" target="_blank">See how the code for browser detection works</a>. </dd>
<dt><a href="http://www.webcredible.co.uk/user-friendly-resources/css/hacks-browser-detection.shtml" target="_blank">CSS hacks &amp; browser detection</a></dt>
<dd>Webcredible Ltd. 2004. </dd>
<dt><a href="http://cyscape.com/developer/workshop/" target="_blank">Browser Compatibility Workshop</a></dt>
<dd>BrowserHawk</dd>
<dt><a href="http://www.netmechanic.com/news/vol3/javascript_no15.htm" target="_blank">JavaScript Tip: Browser Detection And Redirection</a></dt>
<dd>NetMechanic</dd>
</dl>
</div>
<p>To help ensure your visitors get the best experience at your site&#8211;including being able to see all content in the proper location on the screen&#8211;it is handy to find out what platform, system,  browser, and plugins they&#8217;re using. Read more at Tech Patterns:</p>
<div>
<ul>
<li><a href="http://techpatterns.com/downloads/javascript_browser_detection.php#full">Full Featured Javascript Browser detection</a></li>
<li> <a href="http://techpatterns.com/downloads/javascript_browser_detection.php#simple">Simple Javascript Browser detection</a></li>
<li> <a href="http://techpatterns.com/downloads/php_browser_detection.php">Full Featured PHP browser and OS detection</a></li>
<li> <a href="http://techpatterns.com/downloads/php-browser-detection-basic.php">Light Featured PHP browser detection</a></li>
<li> <a href="http://techpatterns.com/downloads/php-browser-detection-basic.php#if">Simple PHP browser detection</a></li>
</ul>
</div>
<h3>The simplest solution for consistent layout</h3>
<p>Because Explorer has a different margin set on web pages than other compliant browsers, the web author can make a style sheet that accommodates this difference and automatically link visitors to it if they are using Exploerer. Add this to the &lt;head&gt; section of your template:</p>
<blockquote><p><code>&lt;!--[if gte ie 5.0000]&gt;<br />
&lt;link rel="stylesheet" type="text/css" href="ie.css"/&gt;<br />
&lt;![endif]--&gt;</code><br />
<!--content ends here--></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://pamvanlonden.com/browser-detection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
