我有一个小的登录表单,我将通过GET发送名称和密码,但我不想以纯文本形式将密码放在网址中。按下提交按钮之后,但是在通过GET发送之前我可以Md5吗?
答案 0 :(得分:6)
如果您想学习安全地哈希用户密码,请仔细阅读How do you use bcrypt for hashing passwords in PHP?和Secure hash and salt for PHP passwords 。
我将通过GET发送名称和密码
永远不要使用GET登录,是的,它显示在网址中,但它也显示服务器请求日志中的GET参数。
我只想隐藏用户周围的人物 计算机。
使用表单输入类型type="password"
将解决该问题。但是也存在Man-In-The-Middle攻击的问题,而攻击者可以将自己注入到数据包路由机制中并捕获&记录然后在跳跃之间重新路由每个数据包,捕获POST,GET ect参数。因此,如果您认真对待保护您的用户/站点免受攻击,那么您至少应该使用SSL来加密A点和B点之间的连接数据包。
但是回答你的问题就是你问的问题(ish)o_O,你需要在POST之前使用javascript来处理表单,但是如果javascript关闭它显然不会工作:
<?php echo '<pre>'.print_r($_POST,true).'</pre>';?>
<script type="text/javascript"
src="http://github.com/kvz/phpjs/raw/master/functions/xml/utf8_encode.js"></script>
<script type="text/javascript"
src="http://github.com/kvz/phpjs/raw/master/functions/strings/md5.js"></script>
<script type="text/javascript">
<!--
function pwd_handler(form)
{
if (form.password.value != '')
{
form.md5password.value = md5(form.password.value);
form.password.value = '';
}
}
//-->
</script>
<form action="" method="post" onsubmit="pwd_handler(this);">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="md5password" value="" />
<input type="submit" value="Log in" />
</form>