我想允许用户在“更改密码”页面上输入原始密码,并让页面在没有刷新的情况下检查是否正确。我想在密码正确时在文本框旁边显示一个复选框图像。
但是,我有两个问题。 1)如何以安全的方式完成此操作,以及2)使用每个按键触发ajax调用似乎并不总能捕获每个按键。这是我到目前为止所做的:
$("#oldPW").keyup(function () {
checkPW();
});
// on keyup
function checkPW() {
var pw = $("#oldPW").val();
var dataSring = "pw=" + pw;
$.ajax({
type: "POST",
url: "checkPW",
data: dataSring,
cache: false,
success: function (data) {
if (data== "True") {
$("#pwok").fadeIn();
}
if (data== "false") {
$("#pwok").fadeOut();
}
}
});
}
我发现上述代码的问题是用户可以手动显示图像,这会绕过上述“安全性”。我可以在用户按下提交后再次检查,但这不能解决问题1,缺少密钥,我不确定它在安全性方面是否也是万无一失。
答案 0 :(得分:1)
对于问题#1,您需要在服务器端验证密码,无论。然后,你不必担心有人绕过客户端。
对于#2,问题是您不知道ajax呼叫将完成的顺序,因此之前的呼叫可能在最近一次呼叫后完成。您可以通过多种方式处理此问题,但一种方法是在每次重试时中止请求:
$("#oldPW").data('lastRequest', {abort: function () {}});
function checkPW() {
var pw = $("#oldPW").val();
var dataSring = "pw=" + pw;
$("#oldPW").data('lastRequest').abort();
$("#oldPW").data('lastRequest', $.ajax({