保存嵌入 php 的 Joomla 3.4.8 文章时收到 403 错误


Receiving 403 error when saving Joomla 3.4.8 article with php embedded

我过去有过这个工作(Joomla的早期版本),但一定改变了一些东西,我无法让它工作(即使在一个全新的网站)。 我正在使用Joomla 3.4.8,最新版本的JCE和DirectPhp。我将"超级用户">"文本过滤器设置"的全局配置>设置为"无过滤",并将"JCE 管理">编辑器配置文件>"默认>编辑器参数">"高级>允许 PHP "调整为"是"。

然而,当我使用 Php 代码保存任何文章时,我收到 403 错误。 如果没有 php 代码,它会正确保存。

有人有任何提示吗?

我们的许多客户都面临着同样的问题。事实证明,这与他们的主机强制浏览器缓存非静态内容有关。请按照此处的指南(http://www.itoctopus.com/how-to-disable-browser-caching-in-joomla-backend)并将适当的代码添加到.htaccess文件中以防止浏览器缓存。如果它解决了您的问题,请发回此处。

我解决这个问题的一种方法是直接在PHPmyAdmin中编辑php代码。

似乎 apache 服务器上的mod_security导致在您的代码错误或受到限制时强制错误。(这不是一件坏事,因为它确实可以阻止您网站上的黑客攻击尝试。

通过phpMyAdmin需要更多的技能,但工作原理都是一样的。

无论如何,当我遇到这个问题时,这就是我现在所做的。 (困难的部分是首先找到导致错误的原因)

可能

mod_security被设置为阻止PHP注入攻击,它将其视为一个。判断方法是检查 apache 错误日志和 mod 安全审核日志。然后,如果您有权访问配置文件,则可以基于该 url 或该变量配置异常,以将其从 PHP 注入检查中列入白名单。

警告:如果你这样做了,请确保处理该表单的代码能够保护自己免受注入,因为你刚刚阻止了 apache 保护它。

但最好的解决方案是编写一个可以从内容项调用的插件,而不是将所有代码注入到您的内容中。使其更易于维护 -- 更改是本地化的,而不是分散在大量数据库记录中。更改插件一次,每个需要它的页面都会进行更改,而不必触摸数据库中的每个项目来进行相同的更改。

PS:有一个Joomla Stack Exchange。检查列表(在撰写本文时右上角)。