【问题标题】:How to write an htaccess rule for nginx to protect a directory如何为 nginx 编写 htaccess 规则来保护目录
【发布时间】:2018-03-14 11:47:22
【问题描述】:

我正在尝试保护 /uploads 目录中的某些类型的文件免受 Wordpress 网站中未登录用户的影响。问题是我正在尝试为 Nginx 服务器翻译指令。

htaccess 语法是:

RewriteCond %{REQUEST_FILENAME} ^.*(pdf|doc|docx|ppt|pptx|)$
 RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
 RewriteRule . - [R=403,L]

我知道这不是一个“铁板钉钉”的解决方案,但它足以满足我的需要。 它应该是这样的:

# nginx configuration location ~ ^.*(pdf|doc|docx|ppt|pptx|)$ { }
  1. 但是我应该怎么写cookie部分呢?
  2. 此外,如何添加规则以将用户重定向到特定页面?

【问题讨论】:

    标签: wordpress .htaccess nginx


    【解决方案1】:

    当然,仅检查 cookie 的存在并不是保护文件的安全方法 - 攻击者很容易添加 cookie。

    但是,如果您不想检查 cookie 的存在,您可以使用:

    location ~ ^.*(pdf|doc|docx|ppt|pptx|)$ {
        if ($cookie_CookieName = false) {
            return 301 http://example.com/redirect-here;
        }
    }
    

    您现在唯一遇到的其他问题是 Wordpress 登录的 cookie 名称包含一个随机数 - 例如 wordpress_logged_in_12345

    因此,您需要添加另一个 cookie 以显示用户已登录。

    【讨论】:

    • 感谢@Chris,是否可以编写通配符 cookie 名称? wordpress_logged_in.
    • 我不相信,因为cookie名称是一个变量名称,它的用途有限(例如仅检查它是否存在)。如果他们有一个列出 cookie 的变量,您就可以对其进行正则表达式...但我不相信他们会这样做。
    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2016-08-09
    相关资源
    最近更新 更多