【问题标题】:Fastest way to 403 in Zend frameworkZend 框架中最快的 403 方法
【发布时间】:2010-12-13 16:09:14
【问题描述】:

拒绝来自恶意脚本的请求的最佳方法是什么?我有一个带有模块的 Zend 应用程序。我有一个扫描仪正在拨号的 URL 列表,例如 mywebsite.com/phpmyadmin、/webmail、/cpanel 等。现在,它们正在获取 404,阻塞了我的错误日志。我想从应用程序中对它们进行 403 处理。 (除非有更好的方法来处理)?

在 Zend 中最快的 403 方法是什么,这样它就不会在调度周期中不必要地搅动?我在下面的插件中做,但我不确定这是最好的方法:

public function preDispatch(Zend_Controller_Request_Abstract $request)
{
    if (malicious request) {
        $this->getResponse()
                    ->clearHeaders()
                    ->setHttpResponseCode(403)
                    ->appendBody("Forbidden")
                    ->sendResponse();
    }
}

感谢您的任何建议!

【问题讨论】:

  • 如果我按照你的方式做,它仍然会尝试加载视图脚本 :( 但我在我的操作中这样做

标签: php zend-framework http-status-code-403


【解决方案1】:

查看名为 Redirector 的 Zend Controller Action Helper:http://framework.zend.com/manual/en/zend.controller.actionhelpers.html 它会做与您的插件相同的事情,但这并不一定会让它更快。

【讨论】:

  • 动作助手在 preDispatch 之后可用。我正在努力让它更快,而不是更慢。
【解决方案2】:

如果您知道错误请求 URI 的样子,您可以使用 mod_rewrite 规则将它们直接发送到一些自定义静态错误页面。在将请求发送到 index.php 的规则之前输入规则,这些请求永远不会命中您的应用程序。

RewriteEngine On
RewriteRule ^/mywebsite.com/phpmyadmin /errorpage.php [L]
RewriteRule !(phpdoc|docs)|\.(js|ico|gif|jpg|png|css|html)$ /index.php

【讨论】:

  • 哦,是的,这是一个不错的选择。 403 自动扫描仪不会做太多。让 Web 服务器在它们到达您的应用程序之前处理明显有问题的页面肯定会更快。但是,您的列表永远不会完整,因此您还应该在应用程序中实现另一个解决方案。不过,这个会处理大部分错误请求。
  • 为什么是静态页面? 403 更快,我相信一些扫描仪如果得到 403 确实会放弃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多