我正在使用 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 日]