据我所知,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])问题密切相关,但我无法做出明确的决定。
根据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
的最佳价值是什么?
答案 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
部分