繁体   English   中英

PHP的形式与SED和EXEC更改SHA1密码

[英]php form change sha1 password with sed and exec

我正在使用一个简单的密码重设表格,这要归功于我的大量帮助。 但是,我想添加一个密码并将重设密码保存在sha1中。 这是我的代码:

#password file
$password='something';

<?php

// Change password

$rawPassword = (isset($_REQUEST["change_pwd"]));
$salt = "lgv932q2e9dshufkdjgf927gf8hlo082";
$newpass = sha1($salt . $rawPassword);


  $change_pass = exec('sed -i " . escapeshellarg("s/\$password=.*/\$password=\'$newpass\'/g")." include/conf.php');

  echo "$change_pass";

?>

<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="change_pwd" maxlength="41">
    <input type="submit" name="Submit" value="Submit" />
</form>

当我提交新密码时,它没有正确更改文件中的sha1密码。 而是每次将密码值更改为:

$password='356a192b7913b04c54574d18c28d46e6395428ab';

更新:我添加了密码,但仍然得到相同的结果。 (我也想知道是否有比使用sed exec更好的方法呢?)

好吧,我仔细看了一下,发现了几件事供您考虑。

我要做的第一件事可能是对表单方法使用POST,然后在PHP的$ _POST数组中捕获数据。 您还似乎在PHP标记之外有一个变量,该变量将在其所处的上下文中作为原始文本输出到浏览器。

加盐是一件好事,它将有助于使密码更难破解。 可选(并建议)是生成随机盐,并将其附加到您的密码上以增强强度,还有其他好处。 请记住,以后在身份验证期间再次对密码进行哈希处理时,请在将来添加盐。

不管是否使用相同的密码,以下代码都将为您工作,以生成新的密码哈希。

<?php

// Change password
if(isset($_POST["change_pwd"])) {
    $rawPassword = $_POST["change_pwd"]; 
    $salt = sha1(microtime()."lgv932q2e9dshufkdjgf927gf8hlo082");
    $newpass = sha1($salt . $rawPassword).$salt;
}

  $change_pass = exec('sed -i ' . escapeshellarg("s/\$password=.*/\$password=\'$newpass\'/g"). ' include/conf.php');
  //Also helpful to note that PHP halts execution until the command in exec() completes

  echo "$newpass";

?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="change_pwd" maxlength="41">
    <input type="submit" name="Submit" value="Submit" />
</form>

希望对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM