【发布时间】:2021-04-10 06:31:19
【问题描述】:
我为我的 PHP 网站准备了以下内容:
- 启用 SSL
-
Cookie:
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 传输时的密码 SHA512,然后是 password_hash(),最后是 PASSWORD_BCRYPT
- Mysqli 准备好的语句
- INSERTING/UPDATE 到 Mysql 时所有输入都经过清理
- htmlentities 等。用于尽可能避免 xss。
我现在正在寻找使用 AES_Encrypt 函数来加密敏感数据,方法是将 $key 加密和解密存储在 webroot 目录之外。
这可能会存储患者数据,我所拥有的是否足够安全?
问题:
在 INSERT/UPDATE 时如何清理输入?如果您使用的是准备好的语句,您也不应该手动转义数据。
答案:
示例:
$firstname = ucwords(filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING));
【问题讨论】:
-
在 INSERT/UPDATE 时如何清理输入?如果你使用的是准备好的语句,你也不应该手动转义数据。
-
关于加密,你应该使用一些久经考验的库,比如defuse/php-encryption。
-
处理密码时,您是使用自己的哈希和盐还是使用
password_hash()和password_verify()? -
是的,我正在使用 password_hash() / password_verify()
-
最后的建议是不要在
password_hash中使用默认基线cost参数 (10) 并使用更高的值,具体取决于服务器处理器的能力。通常目标值是 12-15。它使您的哈希值更加安全。
标签: php mysql security encryption