加密php-sql用户数据和结构

时间:2016-07-01 09:48:13

标签: php encryption

我正在处理一个处理财务数据的在线平台,我正在寻找对其上的所有数据进行加密,以避免以泄露个人密码的人之外的任何方式泄露信息。我希望你能帮我解决这个问题:

平台在php文件和mysql数据库之间进行交互。用户个人密钥由登录后给出的session_id定义。

表1:用户(user_id,电子邮件,密码等) - 这会存储任何用户登录我们平台并访问我们任何模板的相关数据。

表2: User_template1_data (template_user_id,user_id,电子邮件,名称,特定信息。)这将特定数据存储到数据模板

表3,4,5,6:日志(log_id,日期时间,详细信息,template_user_id等)。

日志表格(可能是付款,作业,广告等)中,我们存储了敏感数据,除了用户之外,没有其他人可以阅读,除非有权访问,否则甚至不是管理员。

现在我想到的方式是:

示例:

表1:

user_id - Name - email - pass
1 - Jay - jay.. - (salt / hashed)

表2:

User_template1_data, user_id, division * 
1 - 1 - Jay - jay.. - accountant

php会看到用户1显然是一名会计师。这不是真正敏感的数据。

我们在表3 中添加以下数据:

> log_id - User_template1_data - date - client - earnings 1 - 1 -
> 2016,01,01 - Gucci SLR - 5000,00 2 - 1 - 2016,02,01 - Prada SLR -
> 51000,00 3 - 1 - 2016,03,01 - Chanel SLR - 15000,00

此连接应加密,因此任何侵入数据库的人都可以看到连接。我想到了以下内容,如果我错了,请纠正我:

> log_id - User_template1_data - date - client - earnings 1 - hash and
> salt the User_template1_data - 2016-01-01 - Gucci SLR - 5000 2 - hash
> and salt the User_template1_data - 2016-02,01 - Prada SLR - 51000 3 -
> hash and salt the User_template1_data - 2016-03-01 - Chanel SLR -
> 15000

这种方式只有登录的人,存储敏感数据加密,那么就不会被解密。

如果我错了,请告诉我,如果我错了,请告诉我 最重要的是,我应该使用哪种加密技术,如何构建它等等。非常感谢!

1 个答案:

答案 0 :(得分:0)

一般情况下,您应该设置数据库,以便可以信任它是安全的,但这可能是一个有趣的实验来解决这个问题。最重要的部分是在编程语言中使用标准加密方法,如果是php,请使用openssl包。

使用salt进行哈希处理在这里没什么用,因为哈希是一种单向操作,因此即使拥有数据的用户也无法对其进行解密。

我会选择像

这样的东西
  • 使用加密密钥,使用您解密的用户密码加密,并在用户登录时进入会话。当然要确保会话在光盘上加密,并且您使用bcrypt存储密码,但加密密钥使用明文密码,以便找不到加密密钥。
  • 存储敏感数据时,使用会话中的密钥对其进行加密,并在使用相同的密钥对数据进行解密时
  • 请记住在用户更改密码时更新存储的加密密钥

我建议使用AES-256-CBC进行加密。

如果这不仅仅用于实验或学习,我建议先搜索现有的解决方案。

另外请记住,如果用户忘记密码,将无法获取数据