0

我真的可以为我的网站的表单重定向和验证问题提供一些帮助。

我已经成功地让输入的“密码”重定向到输入值,但是如果用户输入错误的密码,他们会得到一个 404 错误——这是正确的,但对用户来说不是很好。

我的问题是,有没有在服务器上针对 txt 或 xml 文件验证表单,并在提交之前验证密码列表?因此,如果不正确,用户会收到警报而不是 404!

以下是当前工作的示例,感谢您的帮助!

<html><head>
<SCRIPT TYPE="text/javascript">

function login() {
   if (validLogin()) {
      password = document.userInfos.password.value;
      self.location.href=
        ""+password+"";
      }
   }
function validLogin() {
   if (isBlank(document.userInfos.password.value)){
      alert("Can't be blank");
      document.userInfos.password.focus();
      return false;
      }
   return true;      
   }
function isBlank(s) {
   return (s == "");
   }

   function doKey(e) {
//check to see if the return key was pressed ...
if( event.keyCode == 13){ 
//call the login function ...
login();
//prevent the page from reloading ...
return false;
}
}

//listen for keypress events and then call doKey()
document.onkeypress = doKey;

</SCRIPT>

</head>

        <form  NAME="userInfos" >


<INPUT TYPE="password" NAME="password" LENGTH="20" style="color: #333333" size="23" >&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="button" style="color: #333333" onClick="login()" VALUE=" View ">
</form>

    </body>
</html>
4

1 回答 1

1

不要在客户端 JavaScript 中检查密码;任何访问者都可以使用“查看源代码”获得可用的密码。如果可能,请改为使用 PHP 脚本、CGI 脚本或 htpasswd 文件检查服务器上的密码。

如果您使用的免费网络主机不允许任何更好的选择,您可以为您的 URL 发出 AJAX 请求并检查状态代码:

var prefix = "/~myusername/passwords/", suffix = ".html";
var url = prefix + document.userInfos.password.value + suffix;

var xhr = new XMLHttpRequest(); // need some more code to support IE 6
xhr.open('GET', url);

xhr.onreadystatechange = function() {

    if (xhr.readyState !== 4) {
        return;
    }

    if (xhr.status === 200) {
        // It's possible to grab user-specific settings from xhr.responseText,
        // (e.g. the URL to redirect to), but for simplicity's sake...
        location.href = url;
    } else {
        alert('Password incorrect');
    }

};

xhr.send();

但是,请记住以下限制

  • 受保护的 HTML 文件应位于与登录页面和密码文件不同的目录中。

  • 该目录的名称一定难以预测

  • 撤销用户的访问权限,您需要重命名包含受保护 HTML 文件的目录,并相应地更新所有其他用户密码的文件。

  • 直接链接到受保护的文件会暴露它们(直到目录被重命名),并且受保护的文件可能会出于各种已知和未知的原因出现在 Google或其他搜索引擎上。

  • 没有针对暴力破解密码猜测通过日志文件泄露密码的保护措施。

于 2013-01-23T00:44:20.387 回答