Php 是否可以在MySQL常规/慢速查询日志中隐藏密码?
有时我查看MySQL日志,偶然发现一些请求以明文形式显示密码 如果我在PHP中创建日志,我将能够访问它们Php 是否可以在MySQL常规/慢速查询日志中隐藏密码?,php,mysql,security,aes,Php,Mysql,Security,Aes,有时我查看MySQL日志,偶然发现一些请求以明文形式显示密码 如果我在PHP中创建日志,我将能够访问它们 但那又如何呢。它们是一个可用的选项,还是可以设置一个不会保存在日志中的mySQL变量?不幸的是,我知道没有办法禁用单个语句的mySQL日志记录。MySQL文档建议出于以下原因保护日志: 从 从MySQL 5.6.3开始,密码在语句中写入通用 查询日志由服务器重写,不会以明文形式出现 文本。可以抑制常规查询日志的密码重写 通过使用--log raw选项启动服务器。此选项可能是 用于诊断目的,将
但那又如何呢。它们是一个可用的选项,还是可以设置一个不会保存在日志中的mySQL变量?不幸的是,我知道没有办法禁用单个语句的mySQL日志记录。MySQL文档建议出于以下原因保护日志: 从 从MySQL 5.6.3开始,密码在语句中写入通用 查询日志由服务器重写,不会以明文形式出现 文本。可以抑制常规查询日志的密码重写 通过使用--log raw选项启动服务器。此选项可能是 用于诊断目的,将语句的确切文本视为 已由服务器接收,但出于安全原因,不建议这样做 供生产使用 在MySQL 5.6.3之前,语句中的密码不会被重写,并且 应保护常规查询日志。见第6.1.2.2节, “” 不幸的是,(从5.6.3开始)内置的反密码日志只适用于MySQL password()函数 我看到了一些解决您问题的可能方法:
您在哪里找到它仅适用于PASSWORD()的信息?这听起来像是一个没有完整性保证的示例列表(创建用户、授予、设置密码、密码)。第五个选项-安排一个cron作业来运行
file\u put\u contents('/log\u file\u path',preg\u replace('\b(AES(?:EN\124; DE)CRYPT)\s*(.s*([\'^'])(.+?)\2\s*)\s*\)\b\35i','$1($2*****$2'),file\u contents(/log path')
我也希望看到一个权威的声明来源,它只适用于PASSWORD()
-我至少希望它也能用于设置密码
查询-但是,@mgutt我怀疑它不能用于AES_ENCRYPT
/AES_DECRYPT
,因为它们不仅仅用于密码,它们是通用的加密函数。@DaveRandom确实更好地描述了我的意思:MySQL只会不记录密码密码,当它知道它正在使用密码,如密码,创建,授予,…-我怀疑AES*功能将不会被记录。