我的PHP网站有以下内容:
Cookies:
session_set_cookie_params($cookieParams["lifetime"],
$cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
传输密码SHA512,然后是password_hash(),最后是PASSWORD_BCRYPT
我现在正在寻求使用AES_Encrypt函数来加密敏感数据,方法是在Webroot目录之外存储加密和解密的$ key。
这可能会存储患者数据,我现有的数据是否足够安全?
问题:
INSERT / UPDATE时如何清理输入?如果您正在使用预备语句,则也不应手动转义数据。
答案:
例如:
$firstname = ucwords(filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING));
答案 0 :(得分:8)
我一直都明白不使用 MySQL内置的加密功能,因为静态数据(在SQL中)的加密点是,如果服务器被泄露,数据不是那么大的风险。
MySQL内置功能的问题在于,它不适用于何时将数据传递给" at rest "状态,因此任何数据的明文都可以记录在MySQL日志中(以及存储系统上的其他位置,例如查询查找未加密,因此您可以在多次查找和count
结果推导列值之前)/之前它是加密的。 You can read more about this here
关于加密,您应该使用一些久经考验的库,例如defuse/php-encryption。
从我自己对此主题的研究中所读到的内容,Magnus提供给defuse/php-encryption的链接是阻止MySQL导致您破坏数据的最好方法之一,从不放过MySQL程序/服务器曾经看到你的数据的明文值。