【问题标题】:Secure way of passing values using POST method使用 POST 方法传递值的安全方式
【发布时间】:2017-09-27 06:08:11
【问题描述】:
我需要使用 POST 方法表单将一些值传递到另一个支付处理器站点。这些值类似于在我的帐户上生成的令牌,我目前在这些值上使用输入 type="hidden" 的基本表单。还有一个变量用 sha1 加密。但我关心的是它的安全性,因为 type="hidden" 可以在 HTML 中看到。在这种情况下这样做的正确方法是什么,通常我应该使用什么?我对此很陌生,因此我们将不胜感激。
一段代码:
<?php $digest = SHA1($key . $order_number . $amount . $currency); ?>
<input type="hidden" name="digest" value="<?php echo $digest; ?>">
<input type="hidden" name="authenticity_token" value="123456">
【问题讨论】:
标签:
php
html
forms
post
input
【解决方案1】:
如果你想保护传输的数据不被窥探,那么答案不是在 PHP 或 HTML 中找到,而是在 Web 服务器本身。
默认情况下,浏览器和服务器之间的数据是纯文本的。甚至二进制数据也被编码成纯文本并在另一端解码。
唯一保护您的传输的方法是使用 HTTPS 作为您的协议。
这需要以下内容:
- HTTPS 证书。您可以从不同的地方获取它们,例如 GeoTrust。您还可以从 GoDaddy 或 Name.com 等许多第三方获取它们。如果您可以管理它,您还可以使用 LetsEncrypt 免费获取它们。
- 需要安装证书。如果您在托管服务器上,则需要与他们一起组织。
- 在您的链接和网址中,使用
https:// 而不是默认的http://。
服务器和浏览器之间的通信使用可变编码方法进行加密,这使得拦截几乎不切实际并且浪费时间。 (当然,没有绝对保证)。
至于其余的编码,请继续正常进行。设置完成后,加密是自动透明的。
【解决方案2】:
如果你只想对用户隐藏你的数据,你可以在 PHP 中使用会话。
如果您还想从 ISP 保护您的数据,请阅读@Manngo 的答案。他解释了一切。