【问题标题】:kespersy cann't allow password to store in dbkespersy 不允许密码存储在数据库中
【发布时间】:2014-11-18 06:56:23
【问题描述】:

我正在使用 kespersy 防病毒软件。我想将详细信息存储在数据库中。但是在测试时不会打印密码和确认密码值。 除密码和确认密码外,所有字段值都会回显。$pass 是密码变量,$c_pass 是确认密码变量。

<form name="profile" method="post">

         <p style="margin-left:1cm">Name<a style="margin-left:45px"></a>&nbsp: <input type="text" name="p_name" size=18 maxlength=50></p>
         <p style="margin-left:1cm">Email<a style="margin-left:45px"></a>&nbsp: <input type="text" name="email" size=18 maxlength=50></p>
         <p style="margin-left:1cm">Password<a style="margin-left:25px"></a>&nbsp: <input type="password" name="pass" size=18 maxlength=50></p>
         <p style="margin-left:1cm">Confirm<a style="margin-left:30px"></a>&nbsp: <input type="password" name="c_pass" size=18 maxlength=50></p>
         <p style="margin-left:1cm">Phone<a style="margin-left:45px"></a>&nbsp: <input type="text" name="phone" size=18 maxlength=50></p>
         <p style="margin-left:1cm">Address<a style="margin-left:30px"></a> : <textarea name="address" max=200></textarea></p>
         <p style="margin-left:1cm">EIN<a style="margin-left:50px"></a>  &nbsp :  <textarea name="ein" max=200></textarea></p>
         <center><input type="submit" name="edit" value="Edit" /> </center>
        </form>
 <?php
 include "config.php";
 if(isset($_REQUEST['edit']))
 {
  echo "hai";
  echo $pass=$_REQUEST['Pass'];
   echo $c_pass=$REQUEST['c_pass'];
   echo $address=$_REQUEST['address'];
   echo $p_name=$_REQUEST['p_name'];
   echo $phone=$_REQUEST['phone'];
   echo $email=$_REQUEST['email'];
   echo $ein=$_REQUEST['ein'];
    echo $datz=date('m-d-yy h:i:s');
    if($pass==$c_pass)
    {
    echo $c_pass;
    echo $pass;
      if($p_name!='' && $address!='' && $p_name!='' && $phone!='' && $email!='' && $ein!='' && $pass!='')
 {
  echo $sql="insert into register(name,address,contact_name,phone,email,password,ein,c_date) values ('$name','$address','$p_name','$phone','$email','$pass','$ein','$datz')";
   if(mysql_query($sql))
    {
      echo ("<SCRIPT LANGUAGE='JavaScript'>
       window.alert('registered successfully');

       </SCRIPT>");
    }
  else
  {
        echo ("<SCRIPT LANGUAGE='JavaScript'>
       window.alert('try again');

       </SCRIPT>");   
      } 
 }
}
 }

 ?>

【问题讨论】:

  • 明文密码、XSS和SQL注入;你已经掌握了一切;-)

标签: php html css ajax


【解决方案1】:

首先为什么要使用 $_REQUEST 变量?

如果你改用 $_POST 会更安全。

您能否用您的 HTML 表单更新您的问题,以便我们可以看到您在那里做了什么?

另一个建议是使用mysqli 函数甚至prepared statements

使用准备好的语句,您可以更好地防止像 Jack 提到的 SQL 注入。

如果您不使用准备好的语句,那么在将用户输入保存到数据库之前将其转义非常重要:

$name = mysqli_real_escape_string($dblink, $name);

而且您不应该以明文形式保存密码,至少使用 MD5。

$pass = md5($pass);

最好使用 BlackPearl 提到的 SHA1:

$pass = sha1($pass);

更新:

我在您的 HTML 中看到一个错字:

<input type="password" name="pass" size=18 maxlength=50></p>

但是在你的 PHP 代码中你使用:

$_REQUEST['Pass']

这是错误的。

您必须使用相同的名称,区分大小写。

【讨论】:

  • sha1 更好,但仍然容易受到攻击。
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 2016-01-15
  • 1970-01-01
  • 2012-04-07
  • 2013-10-04
  • 2011-04-26
相关资源
最近更新 更多