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

时间:2016-06-10 12:29:48

标签: javascript php jquery ajax authentication

我正在使用PHP,JQuery和AJAX创建用户身份验证系统。提交后,我们会向“authenticate.php”发送一条请求,其中包含以下数据:<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <android.support.v4.widget.DrawerLayout android:id="@+id/my_drawerlayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <!-- your content layout --> <include layout="@layout/activity_list"/> <android.support.design.widget.NavigationView android:layout_marginTop="61dp" android:id="@+id/my_navigation" android:layout_width="250dp" android:layout_height="match_parent" android:layout_gravity="start" android:layoutDirection="ltr" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer"/> &amp; username使用AJAX。 PHP代码检查数据库中的记录,并在password上返回0,在success上返回1。然后,如果返回的值为0,则页面将使用failure重定向到“用户私人页面”。

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

3 个答案:

答案 0 :(得分:0)

由于您已经使用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页面。

答案 1 :(得分:0)

  

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

如果用户已经成功通过身份验证,则只有在@model EventPart <fieldset> <legend>@T("Event")</legend> <fieldset> <div class="editor-label"> <label for="@Html.FieldIdFor(m => m.StartDateTimeProxy)">@T(Html.DisplayNameFor(m => m.StartDateTimeProxy).AsString())</label> </div> <div class="editor-field"> @Html.EditorFor(m => m.StartDateTimeProxy) @* will render Orchard`s datetime editor, see Orchard.Resources/Views/EditorTemplates/DateTimeEditor *@ @Html.ValidationMessageFor(m => m.StartDateTimeProxy) </div> </fieldset> </fieldset> 内再次检查 。 (这通常是会议发挥作用的地方。)

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

  

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

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

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

答案 2 :(得分:0)

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

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

如果您只想快速而又肮脏,可以选择window.location.hrefdocument.location.href

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

无论如何,无论您之后使用服务器端(会话),您都必须检查当前用户的会话状态。