繁体   English   中英

在身份验证中使用jQuery和AJAX重定向页面是否安全

[英]Is it safe to redirect page using jQuery and AJAX in authentication

我正在使用PHP,JQuery和AJAX创建用户身份验证系统。 提交时,将使用AJAX将请求发送到'authenticate.php',其中包含数据: usernamepassword PHP代码检查数据库中的记录,并在success返回0,在failure返回1。 然后,如果返回的值为0,则使用'window.location="user.php"'将页面重定向到'用户专用页'window.location="user.php"'

现在,问题是,这样的身份验证是否安全且正确? 使用jQuery / JavaScript重定向页面有任何安全问题吗?

由于您已经使用PHP,我不建议使用JS来重定向用户。 您可以使用PHP:

if($user == $db['user'] && $password == $db['password']){
    $_SESSION['logged_in'] = true;
    header('location:user.php');
}else{
    echo 'username of password is wrong';
}

然后在你的user.php文件上:

if(isset($_SESSION['logged_in'] && $_SESSION['logged_in'] == true){
    echo 'welcome to the user page';
}else{
    header('location:index.php');//Go back to login page
}

如果人们直接进入user.php页面,他们将被重定向到index.php页面。

现在,问题是,这样的身份验证是否安全且正确?

只有在您的user.php再次检查用户是否已成功通过身份验证。 (这通常是会议发挥作用的地方。)

否则,当然每个知道user.php的URL的人都可以直接访问它。

使用jquery / js重定向页面有任何安全问题吗?

window.location="user.php" (这是错误的,顺便说一句。 - 正确的是window.location.href="user.php" )之间的唯一区别,比如说,该页面的正常链接, <a href="user.php">foo</a> ,第一个是自动发生的,第二个是要求用户先点击链接。

因此,它就像您使用了一个简单的链接一样“安全”。 在这种情况下,这实际上意味着什么,取决于我上面所说的。

取决于您希望应用程序的安全性和合规性。 根据RFC,不建议像这样登录,但保留表单在服务器端并将登录表单集成到前端(通过iframe),然后只需将重定向URL和令牌,范围等重定向到本地html,然后例如。 向您的前端应用程序发送一个窗口postmessage。

https://tools.ietf.org/html/rfc6749#page-19

如果您只是想快速而又脏,可以去window.location.hrefdocument.location.href

或者更安全一点,将用户发送到服务器并将其重定向回来,但最终可能会重定向地狱,因为它不容易回到用户所处的状态(包括设置和内容)。

无论如何,您将始终必须检查当前用户的会话状态,无论您之后使用serveride(会话)进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM