在使用 DedeCMS V5.6 时,有时会遇到“Safe Alert: Request Error step 1!”或“Safe Alert: Request Error step 2!”的错误提示。本文将为您详细解析该问题的成因及解决方法。


形成原因:

这些错误提示是由 DedeCMS 新版本中引入的 SQL 防注入功能所导致的安全警告。具体来说,在自定义模型中使用了某些特定的关键字(如 union、sleep、benchmark、load_file 或 outfile)时,系统会触发此警告。此外,如果采集的内容中包含类似“union”这样的语法结构,也会引发相同的警告信息。


目前,没有一种完美的解决方案可以同时增强安全性和完全防止注入攻击。因此,一个常见的解决办法是修改 DedeCMS 的数据库基类文件,关闭安全检查功能。


解决方法:

要解决这个问题,请按照以下步骤操作:


1. 打开 DedeCMS 程序目录下的 include 文件夹,找到名为 dedesql.class.php 的文件。


2. 在该文件中定位到构造函数部分,代码如下:


function __construct($pconnect=false,$nconnect=true)
{
    $this->isClose = false;
    $this->safeCheck = true;
    if($nconnect)
    {
        $this->Init($pconnect);
    }
}
    


3. 修改其中的 $this->safeCheck = true; 这一行,将其更改为 $this->safeCheck = false;。


通过上述修改,您可以成功关闭安全检查功能,从而避免出现“Safe Alert”相关的错误提示。


需要注意的是,此文件的修改可能会导致 data 文件夹中生成一个名为 md5_safe.txt 的文件。该文件用于记录相关错误信息,并提供给开发者作为参考以便及时修正问题。


尽管如此,对于大多数正常运行的网站,我们建议不要轻易进行此类修改。只有在确实需要解决问题且了解潜在风险的情况下,才执行上述更改。


总之,合理评估网站需求与安全性之间的平衡点非常重要。希望本教程能够帮助您有效解决 DedeCMS 中出现的“Safe Alert”问题。