2012-08-16 75 views

回答

3

不幸的是,我知道沒有辦法禁用MySQL日誌記錄的個人陳述。 MySQL文檔建議保持固定爲此日誌:

5.2.3. The General Query Log

在MySQL 5.6.3,以書面向廣大 查詢日誌報表的密碼是由服務器重寫不會發生字面意思是純文字 。通過使用--log-raw選項啓動服務器,可以爲通用查詢日誌 禁止密碼重寫。這個選項可能是 用於診斷目的,看到服務器收到的報表的確切文本爲 ,但出於安全原因,不建議 用於生產用途。

在MySQL 5.6.3之前,不會重寫語句中的密碼,並且應該保護 一般查詢日誌。參見第6.1.2.2節, 「Administrator Guidelines for Password Security」。

不幸的是,那個(自5.6.3開始)內置的反密碼記錄只適用於MySQL PASSWORD()函數。

我看到你的問題的一些可能的解決方案:

  1. 對於每個查詢:禁用日誌,執行查詢,啓用日誌
  2. 哈希在你的應用程序本身的密碼(你的情況, PHP SHA)
  3. 安全日誌文件,以便沒有人可以看到報表
  4. 登錄朝着一個應用程序,刪除密碼本身
+0

你在哪裏發現它僅適用於PASSWORD()的信息? [密碼安全管理員指南](http://dev.mysql.com/doc/refman/5.1/en/password-security-admin.html)聽起來就像一個例子列表(CREATE USER,GRANT,SET PASSWORD,密碼),不保證完整性。 – mgutt 2012-08-16 08:57:28

+0

第5個選項 - 安排一個cron作業來運行'file_put_contents('/ log_file_path',preg_replace('#\ b(AES_(?: EN | DE)CRYPT)\ s * \(\ s *([\'^「 ])(。+?)\ 2 \ s * \)\ b#i','$ 1($ 2 ***** $ 2)',file_get_contents('/ log_file_path'));' – DaveRandom 2012-08-16 08:57:50

+0

我也想看一個聲明的權威來源,它只適用於「PASSWORD()」 - 我至少希望它也可以使用SET SETWORD查詢 - 但@mgutt我懷疑它*不會與'AES_ENCRYPT '''AES_DECRYPT'因爲它們不僅用於密碼,它們還是一般的加密函數。 – DaveRandom 2012-08-16 09:12:24