有很多写得不好的主题和插件允许atatckers注入代码(记住Timthumb的安全问题)。如果我是一个攻击者,为什么要搜索wp配置。php?只需插入以下代码:
var_dump( DB_NAME, DB_USER, DB_PASSWORD );
您可以尝试隐藏wp配置。php。只要WordPress能够全局访问所有敏感信息,隐藏wp配置就没有任何好处。php。
wp配置中的错误部分。php并不是因为它保存敏感数据。糟糕的部分是将敏感数据定义为全局可访问常量。
Update
我想澄清一下
define()
以及为什么将敏感数据定义为全局常量是个坏主意。
有很多方法可以攻击网站。脚本注入是访问网站的唯一方法。
假设服务器存在允许攻击者访问内存转储的漏洞。攻击者将在内存转储中找到所有变量的所有值。如果定义了一个全局可访问常量,它必须保留在内存中,直到脚本结束。创建变量而不是常量,垃圾收集器很有可能在不再需要变量后覆盖(或释放)内存。
保护敏感数据的更好方法是在使用后立即将其删除:
$db_con = new stdClass();
$db_con->db_user = \'username\';
$db_con->password = \'password\';
$db_con->host = \'localhost\';
$db_handler = new Database_Handler( $db_con );
$db_con = null;
使用敏感数据后,分配给
null
将覆盖内存中的数据。攻击者必须在
$db_con
包含敏感数据。在上面的示例中,这是一个非常短的时间(如果类Database\\u处理程序不保存它的副本)。