0

我有以下 php pahe,它接受用户的名字和密码来访问受密码保护的站点。

 <?php
    /**
     * ****************************************************************************
     * Micro Protector
     * 
     * Version: 1.0
     * Release date: 2007-09-10
     * 
     * USAGE:
     *   Define your requested password below and inset the following code
     *   at the beginning of your page:
     *   <?php require_once("microProtector.php"); ?>
     * 
     *   See the attached example.php.
     * 
     ******************************************************************************/


    $Password = 'testpass'; // Set your password here



    /******************************************************************************/
       if (isset($_POST['submit_pwd'])){
          $pass = isset($_POST['passwd']) ? $_POST['passwd'] : '';

          if ($pass != $Password) {
             showForm("Wrong password");
             exit();     
          }
       } else {
          showForm();
          exit();
       }

    function showForm($error="LOGIN"){
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
       <title>IMC - Authentication</title>
       <link href="style/style.css" rel="stylesheet" type="text/css" />
    <Script>
    <!--
    function capitalize(form) {
        value = form.value;
        newValue = '';
        value = value.split(' ');
        for(var i = 0; i < value.length; i++) {
            newValue += value[i].substring(0,1).toUpperCase() +
            value[i].substring(1,value[i].length) + '';
        }
    newValue = newValue.replace(/(<([^>]+)>)/ig,"");
    form.value = newValue;
    }
    -->
    </Script>
    </head>
    <body>
    <center><a href="http://www.test.com"><img src="http://www.test.com/topLogo.png" border=0 /></a></center>
    <br><br><br>
        <div id="main">
          <div class="caption"><?php echo $error; ?></div>
          <div id="icon">&nbsp;</div>
          <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="pwd">
        Your Name:
            <table>
              <tr><td><input class="text" name="name" onBlur="capitalize(this);" maxlength=12 type="text" /></td></tr>
            </table> 
            Password:
            <table>
              <tr><td><input class="text" name="passwd" maxlength=8 type="password" /></td></tr>
              <tr><td align="center"><br/>
                 <input class="text" type="submit" name="submit_pwd" value="Login" />
              </td></tr>
            </table>  
          </form>
       </div>
    </body>
    </html>

    <?php   
    }
    ?>

目前它没有验证任何 XSS 或任何类型的恶意攻击。在我的联系我们页面上,我有以下代码,可确保用户无法输入任何 XSS 或任何类型的恶意代码:

// Clean up the input values 
foreach($_POST as $key => $value) { 
  if(ini_get('magic_quotes_gpc')) 
    $_POST[$key] = stripslashes($_POST[$key]); 

  $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key])); 
}

谁能告诉我在我的 php 页面中插入上述代码的位置,以确保没有插入恶意代码。

4

1 回答 1

1

我建议使用HTMLPurifier 之类的库。它非常易于使用,并且可以过滤用户输入,防止 XSS 攻击。

$filter = new HTMLPurifier();

foreach($_POST as $key => $value) { 
  $_POST[$key] = $filter->purify($_POST[$key])); 
}

然后您可以根据数据库或其他存储机制中的密码检查密码

高温高压

于 2012-09-04T15:23:53.727 回答