【问题标题】:How to transfer a request from one apache module to other module?如何将请求从一个 apache 模块转移到另一个模块?
【发布时间】:2016-11-01 02:53:38
【问题描述】:

我已经建立了一个基于 joomla 的网站,并使用 Apache 服务器为其提供服务。 我现在必须构建一个模块来检查来自 URI 的请求的合法性,如果 URI 满足某些约束,Apache 然后让它访问正常的 Joomla 网站,否则返回 HTTP_BAD_REQUEST。

例如,如果 URI 包含 <script>,Apache 将返回 HTTP_BAD_REQUEST。否则,它允许客户访问 joomla 网站。那么我该如何编码 ELSE 部分。

static int my_apache_module_function(request_rec *r)
{
    if (strstr(r->args, "<script>") != NULL)
{
        return HTTP_FORBIDDEN;
}
    else
//direct the client to normal joomla homepage.
//I need your help here. I am really thankful for any clues.
}

【问题讨论】:

  • Joomla 确实已经做了很多清理和检查 URI 的工作,如果请求包含 &lt;script&gt; 或很多其他内容,它将返回 404。它有一个完整的清理过程。我认为您应该检查该代码而不是重新发明轮子。如果您发现未正确清理的危险网址,则应将其报告为安全问题。
  • 感谢cmt。您能否分享一下您所说的 joomla 检查 URI 安全性的参考资料?另外,如果是,那么您有什么想法可以禁用它们吗?
  • 你做了哪些研究?您检查了 API 的哪些部分?例如,您可能想查看 filter api。文档的哪一部分你不明白?

标签: apache joomla httprequest apache-modules


【解决方案1】:

很简单,真的。您使用子请求。在伪代码中:

if (r->main != NULL) return AP_DECLINED  // Ignore the subrequests.
sub = ap_sub_req_lookup_uri (r->unparsed_uri, r, NULL);
rc = ap_run_sub_req (sub);
ap_destroy_sub_req (sub);
return rc

诀窍是检查r-&gt;main,以免处理您自己的子请求。

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 2016-08-28
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-09
    相关资源
    最近更新 更多