首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql加密/存储敏感数据,

问Mysql加密/存储敏感数据,
EN

Stack Overflow用户
提问于 2017-05-07 16:27:11
回答 2查看 3.8K关注 0票数 1

我的PHP网站有以下内容:

  • 启用SSL
  • 饼干:

session_set_cookie_params($cookieParams"lifetime",$cookieParams"path",$cookieParams"domain",$secure,$httponly);

  • 密码在传输时是SHA512,然后是password_hash(),最后是PASSWORD_BCRYPT
  • Mysqli准备的声明
  • 在Mysql中插入/更新时,所有的输入都经过消毒处理
  • where实体etc..used,以尽可能避免xss。

我现在希望使用AES_Encrypt函数来加密敏感数据,方法是让$key加密和解密存储在webroot目录之外的数据。

这可能会存储病人的数据,我现有的数据是否足够安全?

问题:

插入/更新时如何清除输入?如果使用预先准备的语句,也不应该手动转义数据。

答案:

示例:

代码语言:javascript
复制
  $firstname = ucwords(filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-07 16:41:40

我一直认为不使用MySQL内置的加密功能,因为rest (在SQL中)对数据进行加密的要点是,如果服务器被破坏,数据就没有那么大的风险。

内置功能的MySQL的问题是,它不适用于数据何时传递到和从"at rest“状态传递,因此任何数据的明文都可以记录在MySQL日志中(以及存储系统的其他部分,例如查询查找没有加密,这样您就可以在加密之前从许多查找及其count结果推断列值)。你可以在这里读到更多关于这个的内容。。

关于加密,您应该使用一些经过尝试和测试的库,如defuse/php-加密。

根据我在自己关于这个主题的研究中所读到的,Magnus提供到defuse/php-加密的链接是防止MySQL使您的数据受到损害的最佳方法之一,因为它从不让MySQL程序/服务器看到数据的明文值。

票数 8
EN

Stack Overflow用户

发布于 2017-05-07 16:55:35

马丁的回答是+1,但我会为它的价值添加一些信息。

MySQL 5.7为InnoDB表空间(https://dev.mysql.com/doc/refman/5.7/en/innodb-tablespace-encryption.html)实现了rest加密。

据报道,MySQL 8.0还将在rest实现对InnoDB重做日志和撤消日志文件(https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html)的加密。

这仍然保留未加密的查询日志和二进制日志。为此,我们必须等待一些未来版本的MySQL。

为什么要花这么长时间?MySQL的安全工程负责人在上个月的Percona会议上说,他们正在非常小心地实现加密权。这意味着实现加密特性,但也包括密钥安全和密钥旋转以及其他用途。要正确处理这个问题非常复杂,而且他们不希望实现一些会被废弃并使每个人的加密数据库无效的东西。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43833858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档