Protecting the admin
The admin interface of your site gives access to almost every piece of data stored. So, don't leave the metaphorical gate lightly guarded. In fact, one of the only telltale signs that someone runs Django is that, when you navigate to http://example.com/admin/
, you will be greeted by the blue login screen.
In production, it is recommended that you change this location to something less obvious. It is as simple as changing this line in your root urls.py
:
url(r'^secretarea/', include(admin.site.urls)),
A slightly more sophisticated approach is to use a dummy admin site at the default location or a honeypot (see the django-admin-honeypot
package). However, the best option is to use HTTPS for your admin area since normal HTTP will send all the data in plaintext over the network.
Check your web server documentation on how to set up HTTPS for admin requests. On Nginx, it is quite easy to set this up and involves specifying the SSL certificate locations. Finally, redirect all...