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

Php 在数据库中存储数据的安全方法,php,database,encryption,Php,Database,Encryption,我计划在我的网站上存储礼品卡代码,人们可以在特定商店购买,然后可以使用这些代码在我的网站上购买物品,现在我计划执行以下过程,以使这些代码更难解密: 首先,我将首先使用str_rot13将每个字母移位13位 第二,我将使用str_replace将每2变为1,并将每1变为2。 第三,我将使用MyScript或任何我想要的加密方法对其进行加密 最后,我将把每一个加密字母移位13,或者任意移位 在php的安全性方面,我不是很在行,所以这就是为什么我要征求您的意见,这是否是一种存储数据的好方法,或者是否有

我计划在我的网站上存储礼品卡代码,人们可以在特定商店购买,然后可以使用这些代码在我的网站上购买物品,现在我计划执行以下过程,以使这些代码更难解密:

首先,我将首先使用str_rot13将每个字母移位13位 第二,我将使用str_replace将每2变为1,并将每1变为2。 第三,我将使用MyScript或任何我想要的加密方法对其进行加密 最后,我将把每一个加密字母移位13,或者任意移位

在php的安全性方面,我不是很在行,所以这就是为什么我要征求您的意见,这是否是一种存储数据的好方法,或者是否有其他方法可以研究

我还意识到,对于如何防止黑客解密我存储在数据库中的任何信息,并没有万无一失的计划或策略,但我至少希望尽可能让他们不轻易解码


注意:我上面使用的方法只是我可能做的一个示例。

我建议您为此使用哈希(以及盐析),就像使用密码一样

您可以使用salt在数据库中散列礼物代码,并将salt和散列存储在数据库中

稍后,当用户使用礼物代码时,只需使用相同的方法重新刷新它,然后检查数据库中是否存在这样的哈希。如果是,这意味着礼物代码是正确的,您只需相应地奖励用户即可


在我看来,散列比加密更安全。但是,如果您倾向于使用加密,您可以使用以下问题答案中的PHP类:

如果您使用的是数据库,您实际上不需要向用户提供任何敏感信息

礼品卡的可能流程:

  • 每张卡片上都有一个唯一的数字(可能是以一种难以猜测的方式随机生成的),写在卡片、纸张等上

  • 结账时,职员要么使用您提供的服务“登记”卡的价值。或者是预先确定的,在这种情况下,卡片可以分组。(例如10美元、20美元等),但仍应以某种方式激活,以打击欺诈行为

  • 然后将该卡交给客户,然后在您的结账时使用该代码来接收与唯一号码关联的值

  • 这些卡的安全和隐私将掌握在你分发的商店手中。如果发生盗窃或其他严重问题,您需要知道哪家商店有哪家等

    这样,用户就无法(轻松地)猜出数字,因为它应该是1。购买和2。还不能用

    虽然如果正确地进行哈希和加密是安全的,但是向用户提供有关内部结构的潜在信息是没有实际意义的。即使他们很难得到