我目前正致力于使用SSL保护我的Django网站。我希望某些URL模式只能通过HTTPS访问。最重要的一件事是保护登录站点。有一个表单,用户将其登录名/密码输入表单,表单将POST到服务器。在登录页面模板中,我有类似
的内容<form method="POST" action="{% url login %}">
在我的urls.py
中,其中一种模式类似于
url(r'^login/$', 'mySiteLogin', name='login'),
现在我发现了一些资源,建议我应该使用一个将http
重写为https
的中间件,例如:Django relative urls and https。但登录无法以这种方式完成 - 当用户已经以明文发布密码时,重写协议是没有用的!
所以我在想,我可以告诉{% url %}
使用https
吗?我正在考虑使用装饰器标记需要加密的视图的解决方案,然后某些类似于{% url %}
的标记将使用此信息并在需要时创建与https
的链接。
或者还有其他方法吗?
谢谢,
麦克
答案 0 :(得分:3)
但登录无法通过这种方式完成 - 当用户已经发布了他们的协议时,重写协议是没有用的 明文密码!
只需通过HTTPS提供登录页面。这似乎是一个好主意。
“到1月5日,很明显是一个 整个国家的密码价值 正在被盗 就在最伟大的中间 两次政治动荡 几十年。“ - 这就是你不应该这样做的原因 通过HTTP提供您的登录表单 虽然它通过HTTPS进行POST。
简而言之,来自突尼斯的互联网服务提供商将恶意JavaScript代码注入Facebook的登录页面以窃取用户登录信息。
答案 1 :(得分:0)
也许您应该考虑在HTTP和HTTPS之间进行重定向的中间件解决方案。一个例子:http://djangosnippets.org/snippets/85/