【问题标题】:User data protection with encoding and decoding?通过编码和解码保护用户数据?
【发布时间】:2013-03-03 13:39:48
【问题描述】:

我正在开发一个 CMS 系统,我想添加一个功能来保护用户的数据。当然,密码是散列的,只能使用暴力破解来解码。但现在是关于其余数据,例如他们的邮件地址。我想要一个功能,当用户注册时可以对邮件地址进行编码,每次发送邮件时都可以对其进行解码。现在哈希的问题是你不能轻易地将它转换回来(我认为),至少对于 md5 和 sh1 和类似的算法,这是不可能的,所以这不是我想要的。

我想要一个可以在编码和解码过程中使用盐的功能。这意味着我在 Web 应用程序的某个位置存储了一个随机字符串,该字符串用作此过程的“种子”或“盐”,因此如果该随机字符串不同,结果会有所不同,这使得解码一次变得更加困难黑客(例如)闯入数据库并窃取数据。

我在 PHP 中看到了一个名为 base64_encode()base64_decode() 的函数,这些函数可以很容易地对数据进行编码和解码。这些函数的问题是没有“盐”参数,我认为它作为保护不是很好。是否有一个功能可以通过编码和解码功能以及盐参数提供更多保护?

提前致谢, 蒂姆·维塞

【问题讨论】:

  • 嗯...解码和编码一切都会对性能产生影响。最重要的是:您还必须在前端编码东西,这只能通过任何人都可以读取的 JS 来完成。也许你应该使用 SSL 加密
  • 起初,我错了,我的意思是“加密”,这就是为什么我没有找到答案的原因,我想,英语不是我的母语......顺便说一句,你为什么认为我需要例如,使用 Javascript 在客户端上加密或解密内容?我认为这一切都可以在服务器端完成。加密不是用来安全地向浏览器发送数据,那么我将使用 SSL。

标签: php decode encode


【解决方案1】:

让我解释一下编码、散列和加密之间的区别。

  • 编码只是一种表示数据的方式,因此它不能帮助您提高安全性。 base64 用于将 8 位数据表示编码为 6 位,即用于在电子邮件正文中传输。对你没用。
  • 散列是一种数据的单向转换,通常具有以下属性:
    • 许多(实际上是无限的)不同的数据字符串具有相同的哈希值。您可以散列任意长度的字符串,但生成的散列始终是有限的长度,因此并非每个输入字符串都可以具有唯一散列是很清楚的。
    • 虽然散列速度很快,但使用指定散列来猜测原始数据的计算方法并不比尝试所有可能的组合更简单。
    • 加密是您正在寻找的。加密数据只能使用正确的密钥读取。

但是,我认为加密数据库中的数据并没有什么意义。如果有人看到您的 PHP 源代码和数据库,他可以轻松读取密钥并解密数据。只有当有人窃取了原始数据库并且仍然无法访问您的源代码时,它才能为您提供帮助,但这种情况非常罕见,而且网络程序员通常不会这样做。

【讨论】:

  • 我的错,我的意思是加密。英语不是我的母语,所以这是我的错。关于加密,它不仅用于数据库,它还将用于许多其他需要加密的东西。我将删除这个问题并看看“加密”。顺便说一句,谢谢您的回答。
  • 欢迎您。重要的是您要加密的确切内容以及要保护的对象 - 随机网络访问者、窃取您的代码/数据库的黑客或侦听网络通信的嗅探器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 2011-08-21
  • 2017-07-21
  • 2019-10-11
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多