2011-02-10 6 views
4

私は現在SSLでDjangoのWebサイトを保護しています。私は特定のURLパターンをHTTPS経由でしかアクセスできないようにしたいと思います。最も重要なことは、ログインサイトを保護することです。このフォームでは、ユーザーがログイン/パスワードをフォームに入力し、フォームがサーバーにPOSTされます。ログインページのテンプレートでは、私はDjangoという名前のURLとHTTPS/SSL

<form method="POST" action="{% url login %}"> 

やパターンの私のurls.py 1は、今私は、私はその意志のミドルウェアを使用する必要があることを示唆しているいくつかのリソースを見つけた

url(r'^login/$', 'mySiteLogin', name='login'), 

のようなものであるのようなものを持っていますhttphttpsに書き換えます。たとえば、Django relative urls and httpsです。しかし、このようにログインすることはできません。ユーザーがすでにパスワードをプレーンテキストで投稿したときに、プロトコルを書き換えるのは無駄です!

だから私はどういうわけか{% url %}httpsを使用するように指示できますか?私は、デコレータを使用して暗号化が必要なビューをマークし、{% url %}のようなタグでこの情報を使用し、必要に応じてhttpsのリンクを作成するソリューションを考えています。

他にもありますか?

おかげで、

マイク

+0

あなたの '{%url%}'タグは、プロトコルとドメイン、およびパスを出力していますか?例えば。 'https:// yourdomain.com/login /'を出力しますか?私はそれがそのように使われることを意図しているとは思わないからです。 –

+0

元のDjangoタグは、URLの絶対パスのみを出力するので、ドメインもプロトコルもありません。しかし、私は両方を出力し、必要に応じてプロトコルをhttpsに変更したいと思います。 – Jasiu

答えて

3

しかし、ログインは、このよう を行うことはできません - それは、ユーザーが平文で自分の パスワードをすでに掲載しているときのプロトコルを書き換える使用ですありません!

HTTPS経由でログインページを提供するだけです。これは一般的には良い考えです。

「1月5日で、パスワード の 国全体の価値は2つの 十年で最大の 政治的動乱の真っ只中に 権利を盗まれる過程にあったことが明らかになった。」 - ですなぜあなたは HTTPS経由でログインしても、HTTP経由でログインフォームを配信することはできません( )。一言で言えば

http://simonwillison.net/2011/Jan/24/

、チュニジアからのISPは、ユーザのログインを盗むためのFacebookのログインページに悪質なJavaScriptコードを注入しました。

+0

うわー、チュニジアの物語は真面目な音です...とにかく、問題は同じままです:私は '{%url login%}'として書かれたログインページへのリンクを持っています。 httpsリンクを出力するには?または自分のバージョンの '{%url%}'を作る方法は? – Jasiu

+1

ログインページはHTTPS経由でなければならないが、ログインページ自体(ホームページなど)へのリンクを生成する方法は本当ですか?ホームページに{%url login%}を追加すると相対リンクが生成され、ホームページが安全でない場合は安全でないログインページにつながります。 –

関連する問題