nginx HSTS 仅在管理子目录中使用 https

nginx HSTS 仅在管理子目录中使用 https

我正在尝试在我的域的子文件夹中设置一个管理 Web 应用程序/admin

我想确保这个应用程序尽可能的安全(不是因为它绝对必要,而是因为我有兴趣学习网络安全)并且我希望它能够在网站上运行https,而网站的其余部分(非管理位置)应该是http

我有nginx按照说明进行设置这个答案

# non ssl locations
server {
    server_name test.romeovansnick.be;
    listen 80;

    root /var/www/test;

    location / {
        index index.html;
    }

    location /admin {
        return 301 https://test.romeovansnick.be/admin/;
    }
}

# secure server
server {
    listen 443 defaul_server ssl;
    server_name test.romeovansnick.be;

    root /var/www/test;

    location / {
        return 301 http://$server_name$request_uri;
    }

    location /admin {
        index admin.php;
        # add_header Strict-Transport-Security max-age=31536000;
        add_header X-Frame-Options DENY;
    }

    # ssl setup ...
    # php setup ...
}

问题是,我认为我仍然容易受到中间人攻击。至少根据 OWASP,简单地重定向用户并不完全安全。

HSTS我以为可以通过将标头添加到位置来降低中间人攻击的风险/admin,但这会导致支持该功能的浏览器出现重定向循环。我想是因为浏览器将其应用于整个域test.romeovansnick.be(或者我测试得不够)。

我怎样才能使我的网络服务器更安全,抵御此类攻击?

答案1

HSTS 是全域性的,而不是子目录性的。如果您希望在其上使用 HSTS,请使用其他域或子域。

例如 admin.test.romeovansnick.be 或 admintest.romeovansnick.be。或者,花 0.01 欧元通过隐蔽性获得额外的安全性,使用 john.romeovansnick.be 或其他难以猜测的域名。;-)

答案2

如果/admin它只能由网站/网络应用程序的管理员访问,那么如果可以避免的话,我就不会通过 nginx 将其暴露到互联网上。

相关内容