当前,我们部署的项目存在一个严重的安全问题:settings.py包含设置DEBUG=True,它在发生错误时显示调试信息。开发项目时,Django的错误页面向你显示了重要的调试信息,如果将项目部署到服务器后依然保留这个设置,将给攻击者提供大量可供利用的信息。我们还需确保任何人都无法看到这些信息,也不能冒充项目托管网站来重定向请求。
下面来修改settings.py,以让我们能够在本地看到错误消息,但部署到服务器后不显示任何错误消息:
#Heroku设置
if os.getcwd() == '/app':
import dj_database_url
DATABASES = {
'default': dj_database_url.config(default='postgres://localhost')
}
#让request.is_secure()承认X-Forwarded-Proto头
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARD_PROTO', 'https') #支持http请求
#只允许Heroku托管这个项目
ALLOWED_HOSTS = ['hgl-learning-log.herokuapp.com']
DEBUG = False
#支持所有主机的头(gost header)
ALLOWED_HOSTS = ['*']
#静态资产配置
--snip--
修改ALLOWED_HOSTS,只允许Heroku托管这个项目。并设置DEBUG为False
提交并推送修改
1.首先:
git commit -am “Set DEBUG=False for Heroku.”
成功,输出如下:
[master 8fd2d4a] Set DEBUG=False for Heroku.
3 files changed, 36 insertions(+), 3 deletions(-)
create mode 100644 .idea/vcs.xml
git status查看当前在仓库的哪个分支上工作。
接下来执行命令:git push heroku master
成功结果如下:
remote: Verifying deploy... done.
To https://git.heroku.com/hgl-learning-log.git
40e3e17..8fd2d4a master -> master