如何加密表单数据?

Posted

技术标签:

【中文标题】如何加密表单数据?【英文标题】:How to encrypt form data? 【发布时间】:2012-08-30 18:23:52 【问题描述】:

我有一个登录表单,它会将 id 和密码提交到一个 php 文件,然后该文件将根据 SQL 数据库中的数据检查该 id 和 pw。我如何加密传出的表单数据以确保在到达目的地之前没有人可以看到它? 登录表单代码是

<html>
<head>
<title>
Login page
</title>
</head>
<body>
<form name="login" action="fetchalldata.php" method="post">
Username : <input type="text" name="userid"/>
Password : <input type="password" name="pswrd"/>
<input type="button" name="submit" value="Login"/>
</body>
</html>

会在数据库上预散列密码并 发送散列密码更有效?

【问题讨论】:

Use SSL 好吧,我相信 GoDaddy 提供廉价的 SSL 证书。 我不打算购买 SSL 证书.. @loneaft 你应该。所有其他所谓的“解决方案”都是半生不熟的假安全“解决方案”。 (并不是说 SSL 没有缺陷) 那么不要计划安全地提交数据。 【参考方案1】:

SSL 是 的答案。唯一的答案。

但是,如果您必须尝试使用​​自制解决方案,可以考虑以下想法:

让 PHP 代码为 javascript 提供当前时间戳。 您获取用户输入的密码,附加时间戳,然后对其进行加密。 将带有时间戳的加密密码传回服务器。 让服务器确保返回的数据是最新的,让它根据自己的数学计算加密密码。 如果时间戳太旧或已用于登录拒绝它。

这仍然是一个糟糕的想法,但它并不像发送纯文本密码那样糟糕。

使用 SSL。真的。

【讨论】:

我想你忘了提到 OP 真的 应该使用 SSL。 :) @PeeHaa -- 哦.. 抱歉。我必须解决这个问题。感谢您的提醒。【参考方案2】:

使用安全的 SSL 连接是确保表单数据加密的唯一真正方法。但是,您可以在发送之前使用一些 JavaScript 以某种方式对密码进行编码。它不会提供太多的安全性(因为任何可以查看您网站的人都可以看到 JavaScript 并对其进行逆向工程),但它至少可以避免发送纯文本密码。

【讨论】:

更重要的是,如果您网站的用户正在被 MITMed,攻击者可以轻松禁用执行加密的任何脚本,或修改它以向他们发送明文副本。 基于 HTTP 的 Javascript 加密根本不可靠。 @duskwuff,他在这里提到了It won't provide much security (since anyone who can view your site can see the JavaScript and reverse-engineer it) but it does at least avoid sending plain-text passwords around

以上是关于如何加密表单数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何修改form表单中的input值并加密

如何判断保存的值是加密还是解密?

219-如何对密码进行加密?

219-如何对密码进行加密?

RSA加密过的表单密码用python怎么模拟

vue中如何做加密登陆