在数据库中安全存储数据的方法

3
我计划在我的网站上存储礼品卡代码,人们可以在特定商店购买并使用它们在我的网站上购买商品。现在,我计划采用以下过程使这些代码更难以解密:
第一步,我将使用str_rot13将每个字母向后移动13个位置。 第二步,我将使用str_replace将每个2替换为1,每个1替换为2。 第三步,我将使用mycript或其他加密方法对其进行加密。 最后,我将把加密的每个字母向后移动13个位置或者按照其他设置。
当涉及到PHP安全性时,我不是很专业,所以我想听听您的意见,这是否是存储数据的好方法,或者是否有其他替代方案值得考虑。
我也知道没有绝对可靠的计划或策略可以阻止黑客解密我存储在数据库中的任何信息,但我至少希望让他们难以轻松解码。
注意:我以上使用的方法只是一个示例。
2个回答

1
我会建议您在这个目的上使用哈希(结合盐),就像用于密码一样。
您可以在数据库中使用盐对礼品代码进行哈希处理,然后将盐和哈希值都存储在数据库中。
稍后,当用户使用礼品代码时,只需使用相同的方法重新哈希化并检查是否存在这样的哈希值。如果存在,则表示礼品代码是正确的,并且您只需要相应地向用户授予奖励。
在我看来,哈希比加密更安全。如果您倾向于使用加密来实现此目的,则可以使用此问题答案中提供的 PHP 类:Two-way encryption: I need to store passwords that can be retrieved

0

如果您正在使用数据库,则不需要向用户提供任何敏感信息。

礼品卡的可能流程:

  1. 每张卡都有一个唯一的号码(可能是以难以猜测的方式随机生成),写在卡片、纸张等上。

  2. 在结账时,店员可以使用您提供的服务来“注册”卡的价值。或者事先确定好,这种情况下卡可以分组(例如10美元、20美元等)。但仍然应该以某种方式激活以防止欺诈。

  3. 然后将此卡交给客户,然后可以在您的结账页面上使用代码来接收与唯一编号相关联的价值。

这些卡的安全和隐私将掌握在您发放的商店手中。您需要知道哪个商店拥有哪个卡等,以防盗窃或其他严重问题。

这样,用户就无法轻易地猜出号码,因为它必须已经购买并且尚未被使用。

虽然哈希和加密如果正确执行可以很安全,但是让用户了解内部信息没有任何实际意义。即使它们更难获取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接