Mysql加密/存储敏感数据,

mem*_*axt 1 php mysql security encryption

我的PHP网站有以下内容:

  • 已启用SSL
  • 饼干 :

    session_set_cookie_params($cookieParams["lifetime"], 
    $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
    
    Run Code Online (Sandbox Code Playgroud)
  • 传输时密码为SHA512,然后是密码_hash(),最后是PASSWORD_BCRYPT

  • Mysqli准备好的陈述
  • INSERTING/UPDATE进入Mysql时输入全部清理
  • htmlentities等.尽可能避免使用xss.

我现在正在寻找使用AES_Encrypt函数来加密敏感数据,方法是在webroot目录之外存储加密和解密的$ key.

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


题:

INSERT/UPDATE时如何清理输入?如果您使用的是Prepared Statements,则也不应手动转义数据.

答:
例子:

  $firstname = ucwords(filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING));
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 8

我一直都明白不要使用 MySQL内置的加密功能,因为静态数据(在SQL中)的加密点是,如果服务器受到损害,那么数据的风险就不那么大了.

MySQL内置功能的问题在于它不适用于数据传递到" 静止 "状态和从" 静止 "状态传递的时间,因此任何数据的明文都可以记录在MySQL日志中(以及存储系统的其他位置) ,例如查询查找未加密,因此您可以在加密count之前/之前从众多查找及其结果中推断出列值.你可以在这里阅读更多相关信息.

关于加密,你应该使用一些经过试验和测试的库,如defuse/php-encryption.

从我在自己对这个主题的研究中所看到的,Magnus提供的用于化解/ php加密的链接是防止MySQL导致你破坏数据的最好方法之一,从不让MySQL程序/服务器永远看到你的数据的明文价值.