私は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")
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.");
}
});
編集:コードを更新し、質問を言い換えました。[ 2009年10月7日]