使用PHP传递重要数据时

时间:2010-01-28 21:00:58

标签: php

使用Get或Post将数据传递到另一个PHP脚本时,是否应该使用带有盐的MD5对其进行加密?或者有更好的方法吗?

5 个答案:

答案 0 :(得分:9)

什么样的数据? MD5不是加密函数,它是一个散列函数 - 一旦你MD5它没有“未加密”,你就无法获得原始数据。

如果您要传输关键数据(例如信用卡,银行帐户或社会保险号),则应使用安全的SSL连接(即HTTPS)。

答案 1 :(得分:3)

这取决于你想要完成的任务。

通常,如果您只想验证数据是否来自您的应用,请将数据与散列一起传递,以验证数据是否未被篡改。

如果您希望逐字加密请求中的数据,则应该考虑加密而不是散列。

$a = 2;
$b = 3;
$hash = sha1($salt.$a.$b)

$link = "http://www.domain.tld/?index.php?a=$a&b=$b&hash=$hash";

然后:

$a = $_GET['a'];
$b = $_GET['b'];

$hash = sha1($salt.$a.$b);

if ($_GET['hash'] == $hash) {
  //data ok
} else {
  // data has been tampered with
}

答案 2 :(得分:0)

如果您要发送合理的数据(例如密码,用户名甚至电子邮件),您应该以某种“强有力”的方式加密这些数据。它可以通过简单的方式发送,例如通过HTTPS发送。

如果HTTPS不是一个选项,您可以随时使用GnuPG等免费/开放解决方案加密数据。

顺便说一句,MD5是“单向”(but it can be cracked)所以你不能轻易取消MD5。

答案 3 :(得分:0)

我的印象是,这个问题的根本动机是错误地认为PHP比其他网络开发语言更不安全。其他平台(如ASP / .NET)可能有预先构建的方法来保密,但这些方法只有在使用时才有效。 PHP也是如此。把你的问题作为PHP安全性的一个问题(这是一个假设,虽然我可能对你错了,这是一个流行的假设),但我会回答:使用PHP保护数据传输的最佳方法是使用相同的做法用于所有其他平台的技术,例如SSL,强密码,确认IP地址,不留下密钥(即基于角色的cookie),以及为此问题建议的所有其他内容。

话虽如此,你显然想要保证安全,并且想要使用PHP,所以我不会匆匆忙忙地说。但我强烈建议您研究一些基本的网络安全技术,这样您不仅可以了解如何加密数据,还可以了解其他需要注意的事项。

答案 4 :(得分:0)

如果您不想使用HTTPS连接但未传递敏感数据,我建议您加密数据,并在此过程中使用message authentication code

您可能需要查看Mcrypt manual

虽然与GET / POST数据没有特别关系,但我发现了一篇名为PHP encryption for the common man的文章,讨论了如何在PHP应用程序中保护数据。

相关问题