Django:ajax対応のための有効/ご利用のユーザー名/メール登録時には、
-
20-09-2019 - |
質問
私はjQueryを使いインラインデザイン中のユーザー登録防止のための誤差は後掲載されていないかを説明する場合:
- ユーザー名利用
- メールは登録されてい
については、ユーザからのフィードバック前の書を提出防止やりすぎです。このコードは右側にあります。
ご質問:
- この潜在的なセキュリティ問題なのか。私はこの人の私はjavascriptが見urlいポーリングのためのユーザー名/メールの確認として使用したもの(なぜかはわからないけれども、がんを知って).
- れた場合は、どのような保護したいので実行?きないと思いますが、私について少しクロスサイトスクリプティングの保護がないので、必ずどのように実施できると、AJAXの要請など、この場合でも必要です。
で入力します。
現在のコード:
いて以下のビューから一部抜粋ることができていないリコール):
def is_field_available(request):
if request.method == "GET":
get = request.GET.copy()
if get.has_key('username'):
name = get['username']
if User.objects.filter(username__iexact=name) or \
UserProfile.objects.filter(display_name__iexact=name):
return HttpResponse(False)
else:
return HttpResponse(True)
if get.has_key('email'):
email = get['email']
if User.objects.filter(email__iexact=email):
return HttpResponse(False)
else:
return HttpResponse(True)
return HttpResponseServerError("Requires username or email to test")
こちらのログインidとパスワードのjQueryコード:
$.get('is-user-name-available/', { email: $(this).val() },
function(data, status){
if(data == "True"){
$input.fieldValid();
} else {
$input.fieldInvalid("This email address has already been registered. Try another or recover your password.");
}
});
編集:最新のコードの声私の質問であります。[10/07/09]
解決
http://www.djangosnippets.org/snippets/771/ のを参照してください - あなたは、Ajaxリクエストへのあなたの視野を制限することができます。クロスドメインAJAXを行うための唯一の方法は、 JSONP にこれを使用していますあなたのビューではサポートされていません。
他のヒント
はい、これは潜在的なセキュリティ上の問題ですが、大きすぎない1:ちょうどあなたのコードが安全である、と常に隠されるべき情報を明らかにしない何かを返していることを確認してください。
。 誰かがブラウザで入力する場合は悪いものは何もありません。 example.com/account/verify_username/?username=admin (私はここにPOSTを使用することをお勧めしたいが)
だから何を行うべきです。 1)そこにあなたが必要とするすべてのパラメータがしていると、彼らが正しい形式にしていることを確認します 要求がどこから来た2)おそらく検証 3)あなたがコードで発生することができ、すべての例外を処理を確認してください 4)ユニットテストを忘れてはいけない - それは、NOTビューではなく、いくつかの方法であなたのロジックを配置しようとするために:)