Django:ALLOWED_HOSTS最合适的价值是什么?

时间:2014-12-30 07:48:45

标签: django nginx settings spoofing

问题1

据我所知,django在 settings.py 中有 ALLOWED_HOSTS 选项,以防止欺骗攻击。

但是,我不知道在案例1~3 中对于ALLOWED_HOSTS 哪一个最合适的值。 (或者所有人都有相同的结果?

案例1 ALLOWED_HOSTS = ['.mydomain.com']

案例2 ALLOWED_HOSTS = ['myipaddress']

案例3 ALLOWED_HOSTS = ['.mydomain.com', 'myipaddress']

此问题与之前的[1][2][3])问题密切相关,但我无法做出明确的决定。


问题2

根据Brent's answer,编辑 nginx的配置可能会产生相同的结果。 (参见以下代码

upstream app_server {
    server unix:/tmp/gunicorn_mydomain.com.sock fail_timeout=0;
}

server {

    ...

    ## Deny illegal Host headers
    if ($host !~* ^(mydomain.com|www.mydomain.com)$ ) {
        return 444;
    }

    location  / {
        proxy_pass               http://app_server;
        ...
    }

}

与类似逻辑的第一个问题类似,替换mydomain.com|www.mydomain.com的最佳价值是什么?

1 个答案:

答案 0 :(得分:0)

这种问题似乎仅在django 1.5版下发生,不推荐使用。

如果我在server_name中正确设置了nginx configuration(例如mydomain.com),那么nginx会考虑使用IP地址直接访问作为无效请求。

如果我没有在ALLOWED_HOSTS中包含IP地址,当用户访问IP地址时,django会向管理员帐户报告。与此相反,当我在ALLOWED_HOSTS中包含IP地址时,django不会报告。

以下是对我的想法的总结。

(1)仅包含' domain.com'在ALLOWED_HOSTS

(2)从server_name

正确设置默认服务器和nginx

(3)如果您不想在这种情况下发送错误邮件,请在 settings.py 中编辑logging部分