[英]Is it safe to redirect page using jQuery and AJAX in authentication
我正在使用PHP,JQuery和AJAX创建用户身份验证系统。 提交时,将使用AJAX将请求发送到'authenticate.php',其中包含数据: username
和password
。 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.href
或document.location.href
。
或者更安全一点,将用户发送到服务器并将其重定向回来,但最终可能会重定向地狱,因为它不容易回到用户所处的状态(包括设置和内容)。
无论如何,您将始终必须检查当前用户的会话状态,无论您之后使用serveride(会话)进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.