我的PHP网站有以下内容:
session_set_cookie_params($cookieParams"lifetime",$cookieParams"path",$cookieParams"domain",$secure,$httponly);
我现在希望使用AES_Encrypt函数来加密敏感数据,方法是让$key加密和解密存储在webroot目录之外的数据。
这可能会存储病人的数据,我现有的数据是否足够安全?
问题:
插入/更新时如何清除输入?如果使用预先准备的语句,也不应该手动转义数据。
答案:
示例:
$firstname = ucwords(filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING));发布于 2017-05-07 16:41:40
我一直认为不使用MySQL内置的加密功能,因为rest (在SQL中)对数据进行加密的要点是,如果服务器被破坏,数据就没有那么大的风险。
内置功能的MySQL的问题是,它不适用于数据何时传递到和从"at rest“状态传递,因此任何数据的明文都可以记录在MySQL日志中(以及存储系统的其他部分,例如查询查找没有加密,这样您就可以在加密之前从许多查找及其count结果推断列值)。你可以在这里读到更多关于这个的内容。。
关于加密,您应该使用一些经过尝试和测试的库,如defuse/php-加密。
根据我在自己关于这个主题的研究中所读到的,Magnus提供到defuse/php-加密的链接是防止MySQL使您的数据受到损害的最佳方法之一,因为它从不让MySQL程序/服务器看到数据的明文值。
发布于 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会议上说,他们正在非常小心地实现加密权。这意味着实现加密特性,但也包括密钥安全和密钥旋转以及其他用途。要正确处理这个问题非常复杂,而且他们不希望实现一些会被废弃并使每个人的加密数据库无效的东西。
https://stackoverflow.com/questions/43833858
复制相似问题