如何防止访问Django中的管理员网址?

时间:2014-04-30 18:01:43

标签: django django-admin webfaction

Django自动提供admin url,例如www.example.com/admin。 我不希望任何外部访问者访​​问此网址。这应仅在主机中访问并允许IP address。 如果我尝试访问https://instagram.com/admin/(使用Django构建),则会404 page not Found error 我怎样才能达到同样的行为?

这样做的首选和正确方法是什么?

我在webservice中托管webfaction并允许IP address主机意味着其他webfaction帐户持有者可能能够访问我不想要的管理URL。寻找一种简洁明了的方式

感谢:

PS:我在这里发布了一个类似的问题,但这与PHP有关。我想知道如何使用Django实现相同的效果?

1 个答案:

答案 0 :(得分:10)

Django的Two Scoops倡导的一种常用方法是更改​​您的管理URL。因此,您不必在www.example.com/admin/登录管理员,而是登录www.example.com/supers3cret4dm1n/或您已设置的内容。这可能是Instagram在你的例子中所做的。

示例代码:

urlpatterns = patterns(''
    ...
    url(r'^supers3cret4dm1n/', include(admin.site.urls)), # Change the pattern to whatever you want here
    ...
)

请注意,这并不能仅通过一个IP地址访问,但它确实可以有效地隐藏'您的管理员登录页面。

另一个提示是使用django-admin-honeypot包。这会在www.example.com/admin设置虚假管理页面,同时在您设置的其他网站上显示您的真实管理页面。然后,django-admin-honeypot会提醒你是否有人试图在假管理站点破解你的管理员。

编辑:

如果你因为IP地址限制而死定,here's一个SO问答,显示如何使用nginx进行限制。我想它与其他人相似。