[英]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.