<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>PHP Input Filter</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- .small { font-family: Verdana, Arial, Helvetica, sans-serif; padding-left: 5px; font-size: 11px; color: #666666; font-weight: normal; } .grey { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; background-color: #efefef; padding: 5px; border: thin dotted #999999; color: #333333; vertical-align: top; text-align: left; } .white { margin-top: 8px; font-weight: bold; font-family: Helvetica, sans-serif; font-size: 12px; padding: 10px; border: thin dotted #999999; width: auto; } .title { font-size: 16; color: #aaa; margin-bottom: 10px; } --> </style> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } //--> </script> <style type="text/css"> <!-- a:link { color: #666666; } a:visited { color: #666666; } --> </style> </head> <body style="font-size: 14px;"> <table width="100%" border="0" cellpadding="10" cellspacing="0" style="margin-bottom: 5px"> <tr> <td class="grey"> <div style="font-weight: bold; font-size: 12px; ">PHP Input Filter - 1.2.0</div> Copyright 2005 Daniel Morris. (<a href="http://www.opensource.org/licenses/gpl-license.php" alt="GNU General Public Licence">GPL Licence.</a>) </td> <td width="30" class="grey"> <form name="relatedlinks"> <select name="rlinks" onChange="MM_jumpMenu('parent',this,1)" > <option value="" selected>Related Links...</option> <option disabled>- - - - - - - - -</option> <option value="http://cyberai.com/inputfilter/">Project homepage</option> <option value="http://cyberai.users.phpclasses.org/browse/package/2189.html">Phpclasses.org project</option> <option value="http://cyberai.com/inputfilter/input_filter.zip">Download files as .zip</option> <option value="readme.txt">Documentation</option> <option value="http://cyberai.com/inputfilter/blacklist.php">Filter Blacklist</option> <option value="mailto:dan__at__rootcube.com">Email author</option> <option disabled>- - - - - - - - -</option> <option value="http://www.globodigital.net/Documentation/Security_Articles/The_Cross_Site_Scripting_FAQ/">Introduction to XSS</option> <option value="http://www.shocking.com/~rsnake/xss.html">XSS Cheat Sheet</option> </select> </form> </td> <td width="30" class="grey"> <form name="examples"> <select name="exmpl" onChange="MM_jumpMenu('parent',this,1)" > <option value="" selected>Online Examples...</option> <option disabled>- - - - - - - - -</option> <option value="http://cyberai.com/inputfilter/examples/string.php">String</option> <option value="http://cyberai.com/inputfilter/examples/array.php">Array-of-Strings</option> <option value="http://cyberai.com/inputfilter/examples/noparam.php">No Parameters</option> <option value="http://cyberai.com/inputfilter/examples/xss0.php">XSS #0</option> <option value="http://cyberai.com/inputfilter/examples/xss1.php">XSS #1</option> <option value="http://cyberai.com/inputfilter/examples/xss2.php">XSS #2</option> <option value="http://cyberai.com/inputfilter/examples/xss3.php">XSS #3</option> <option value="http://cyberai.com/inputfilter/examples/xss4.php">XSS #4</option> <option value="http://cyberai.com/inputfilter/examples/xss5.php">XSS #5</option> <option value="http://cyberai.com/inputfilter/examples/xss6.php">XSS #6</option> <option value="http://cyberai.com/inputfilter/examples/xss7.php">XSS #7</option> <option value="http://cyberai.com/inputfilter/examples/xss8.php">XSS #8</option> <option value="http://cyberai.com/inputfilter/examples/sql-inject.php">SQL-Injection</option> </select> </form> </td> </tr> </table> <?php
// inject sample $_POST data etc.. if ($_GET["use"] == "sample") { $sample_link = '<span class="small" style="color: #bbb; text-decoration: line-through;">(Inject sample form data)</span>'; $_POST["input"] = 'I like <div good="blah" bad=blah>php</div> but not <br> XSS <img src=javascript:alert(\'bad!\')>'; $_POST["tags"] = 'br'; $_POST["attr"] = 'good, style'; $_POST["tagmethod"] = 1; $_POST["attrmethod"] = 0; $_POST["xssauto"] = 'y'; // sample_link as normal } else $sample_link = '<span class="small">(<a href="index.php?use=sample">Inject sample form data</a>)</span>';
?> <form class="white" action="index.php" method="post"> <div class="title">Example Factory: <?php echo $sample_link; ?></div> <div style="margin-bottom: 5px;">String to be filtered:</div> <textarea name="input" style="width: 500px; height: 80px;"><?php if ($_POST["input"]) echo stripslashes($_POST["input"]); ?></textarea> <div style="margin-bottom: 5px; margin-top: 14px;">List Tags: <span class="small">(Comma-delimited. Eg: tag1, tag2, tag3)</span></div> <input name="tags" type="text" style="width: 500px;" value="<?php if ($_POST["tags"]) echo $_POST["tags"]; ?>"> <div style="margin-bottom: 5px; margin-top: 14px;">List Attributes: <span class="small">(Comma-delimited. Eg: attr1, attr2, attr3)</span></div> <input name="attr" type="text" style="width: 500px;" value="<?php if ($_POST["attr"]) echo $_POST["attr"]; ?>"> <div style="margin-bottom: 5px; margin-top: 14px;">Tag method to apply:</div> <select name="tagmethod"> <option value="0" <?php if ((!$_POST["tagmethod"]) || ($_POST["tagmethod"] == 0)) echo "selected"; ?>>Remove all tags but specified</option> <option value="1" <?php if ($_POST["tagmethod"] == 1) echo "selected"; ?>>Remove only specified tags</option> </select> <div style="margin-bottom: 5px; margin-top: 14px;">Attibute method to apply:</div> <select name="attrmethod"> <option value="0" <?php if ((!$_POST["attrmethod"]) || ($_POST["attrmethod"] == 0)) echo "selected"; ?>>Remove all attibutes but specified</option> <option value="1" <?php if ($_POST["attrmethod"] == 1) echo "selected"; ?>>Remove only specified attibutes</option> </select> <div style="margin-bottom: 5px; margin-top: 14px;">Strip <a href="http://cyberai.com/inputfilter/blacklist.php">identified</a> problem tags and attributes, regardless of user-defined arrays:</div> <select name="xssauto"> <option value="y" <?php if ((!$_POST["xssauto"]) || ($_POST["xssauto"] == 'y')) echo "selected"; ?>>Auto-strip blacklisted: YES</option> <option value="n" <?php if ($_POST["xssauto"] == 'n') echo "selected"; ?>>Auto-strip blacklisted: NO</option> </select> <br><br><br> <input type="hidden" name="sent" value="yes"> <input name="submit" type="submit" value="Process Query"> </form> <?php
// include class file require_once("class.inputfilter_clean.php");
// form has been sent empty if (($_POST["sent"]) && (!$_POST["input"])) { echo "<div class=\"white\"><div class=\"title\">View Results:</div>You have not entered any input data!!</div>\n";
// form has been sent and input is not empty } else if (($_POST["sent"]) && ($_POST["input"])) { // input text $_POST["input"] = stripslashes($_POST["input"]); // tags array $tags = explode(',', $_POST["tags"]); for ($i = 0; $i < count($tags); $i++) $tags[$i] = trim($tags[$i]); // attr array $attr = explode(',', $_POST["attr"]); for ($i = 0; $i < count($attr); $i++) $attr[$i] = trim($attr[$i]); // select fields $tag_method = $_POST["tagmethod"]; $attr_method = $_POST["attrmethod"]; if ($_POST["xssauto"] == 'n') $xss_auto = 0; else $xss_auto = 1; // script-timer setup $sStart = microtime(); // more info on parameters in documentation. $myFilter = new InputFilter($tags, $attr, $tag_method, $attr_method, $xss_auto); // process input $result = $myFilter->process($_POST["input"]); // script timer stop $sStop = microtime(); // script-timer display $time_elapsed = round(($sStop - $sStart), 4); // display output echo "<div class=\"white\"><div class=\"title\">View Results:</div>\n"; echo '<div style="font-size: 11px; font-weight: normal; font-style: italic;"><span style="padding-right: 11px;">(Before)</span> ' . htmlentities($_POST["input"]) . "</div>\n"; echo '<div style="font-size: 15px; font-weight: normal; padding-top: 10px;"><span style="padding-right: 12px;">(After)</span> ' . htmlentities($result) . "</div>\n"; // echo '<div style="font-size: 15px; font-weight: normal; padding-top: 10px;"><span style="padding-right: 12px;">(Actual)</span> ' . $result . "</div>\n"; echo "</div>\n"; echo "<div class=\"grey\" style=\"margin-top: 12px;\"><em>Script execution has taken $time_elapsed seconds.</em></div>\n"; } ?> </body> </html>
|