security - nginx - 限制对 https 的直接 URL 访问,但可以从 http 重定向

标签 security http nginx https


正在寻找类似的问题,但找不到合适的解决方案。

在 nginx 网络服务器上,我有一个监听 443 的网站,我不想从 url 访问它(如果我输入 https://my.server/foo ,给出 403),但只有从 80 端口重定向时才可以接受,其中进行了正确的登录。

我阅读了有关 valid_referers 的内容并尝试了:

valid_referers none blocked server_names
        localhost ip.of.server;
        if ($invalid_referer) {
            return 403;
        }

valid_referers server_names
        localhost ip.of.server;
        if ($invalid_referer) {
            return 403;
        }

因为我不确定什么是正确的语法,但所有的都被完全忽略了。

我做错了什么,这是解决这个问题的好方法吗?

谢谢, 米尔科

编辑: 解决方案是在重写之前放置 valid_referers: 位置 ~ ^/([a-zA-Z0-9=\?]+)$ {

    valid_referers server_names http://ip.of.ser.ver;
    if ($invalid_referer) {
        return 403;
    }

    rewrite ^/(.*)$ / break;
}

最佳答案

此语法应该有效:

valid_referers server_names http://your.domain;
if ($invalid_referer) {
    return 403;
}

但是你想用这个完成什么?引用 header 很容易注入(inject)到请求中。如果这是一种安全措施,那显然是一种非常不安全的措施。

关于security - nginx - 限制对 https 的直接 URL 访问,但可以从 http 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595588/

相关文章:

html - GET 和 POST 方法之间的区别?

mysql - 如何通过socket连接访问数据库? (带 DataGrip)

http - 在 HTTP 中使用自定义 header 字段

PHP文件上传部分上传错误

asp.net - 不引用 MVC 的 AllowHtml 属性

javascript - 绕过自定义登录页面

security - 一个只说 "Mozilla/4.0"的用户代理是一个机器人,对吧?

security - 用于限制访问的 Azure 共享访问签名

r - Shiny可以判断登录nginx反向代理的用途

php - AWS Elastic Beanstalk + Laravel、Nginx 配置