使用Ajax和PHP登录系统 - 我怎么能提高安全性和控制用户的权限?

问题描述 投票:0回答:1

对于在几年第一次,我想实现我的空闲时间的一个小项目。它没有什么大,只将在本地计算机上运行。但因为我想学习新的东西我想专注于动态内容。

用户必须先登录才能访问登陆页面。并且所显示的内容取决于用户的权限。

在过去,我只混合PHP与HTML,并获得一些可怜的代码(在我看来),因为我在身体标记例如有PHP代码。

我的每一页上的代码和子页面始终开始

 <?php

      session_start();
      //check permissions and if the user is logged in
      //redirect to login.php if not

      //create navigation bar based on user permission or include another .php file

      ?>

有时,我甚至呼应的HTML代码。

这是第一次,我尝试使用“现代”技术,完全后端从前端分开,并保持代码的.html代码内的任何PHP代码片段干净。我尝试使用基本的HTML / CSS / JS针对前端和使用任何(现在PHP)的后端。

现在,我的“检查”,如果用户看到的内容与Ajax和PHP脚本做的权限。

我有一个页面(或部分)的负荷事件的事件处理和传递价值的PHP脚本,这里是我的start.html的例子

document.addEventListener('DOMContentLoaded', function() {
  var verusr = new XMLHttpRequest();
  verusr.open('GET', '/inc/php/login.php');

  verusr.onload = function() {
      if (verusr.status === 200) {
        if(verusr.responseText !== 'true') {
          window.location = 'login.htm';
        }
      }
      else {
        alert('Request failed.');
      }
    };
    verusr.send();

  }

我的login.php做所有的东西验证,创建一个会话和回声的真或假。

这是为了保护网站安全的方式?

我想不会,因为用户能够看到禁用了JavaScript的内容,对不对?

所以这里的解决方法是建立动态网页的内容。

现在我的导航是这样的:

  <nav class="main">
                <ul>
            <li><a href="#1">Test1</a></li>
            <li><a href="#2">Test2</a></li>
            <li><a href="#3">Test3</a></li>
            <li class="right"><a href="/inc/php/logout.php">Logout</a></li>
                </ul>
            </nav>

这是任何人会与禁用了JavaScript,看他访问我的网站。这不会是一个大问题,但它是不是很好无论是。

这里可能的解决方法将是更加动态地构建页面,对不对?

例如,我可以返回一个JSON数组,而不是真/假其中包含一切这是访问和调用一个函数“createNav”,它通过每个数组元素,并创建一个列表元素循环?

这将是一种安全的方法?由于是JS之前没有运行内容,你无法禁用它看到什么。

但是,尽管安全问题,是它不够快?

我打算继续这种做法。如果有人点击链接#1,将触发一个AJAX后(通过“1”的脚本)和脚本将决定什么样的数据显示,但JS决定如何构建内容。

还是会足以返回一个“链接”到可以包括然后.html文件?此文件具有一个onload事件本身,以防止它直接访问?

因为以前我保护我的页面和子页面(已包括)与PHP代码片段像上面,但与AJAX这个片段交互保护它是我很难,因为你,你不必一定运行该脚本或者也许你可以操作脚本的回报(或更改脚本本身)。

但是,当没有对客户在第一时刻的任何数据(尽管样式表),它应该帮助。

我希望我可以解释我的意思,我很期待你的意见。

javascript php ajax login access
1个回答
0
投票

您可以使用PHP开发所有的业务逻辑在后端和前端的每个活动/内容创建API。这些API将只接受数据,并只发送JSON格式的响应。

现在,所有你需要做的是经常使用的锚标记或<input type="button">只发送数据或重定向到其他页面,写JavaScript函数来处理JSON响应/数据来显示内容。

我认为这将是独立于前端,后端和保持的.html代码内的任何PHP代码片段干净整洁的方法。

虽然你将不得不采取一切重大决策通过返回一些标志或多个标志/数据的JSON和它(业务逻辑,权限检查,许可式导航,基于许可页面区块显示/隐藏其内容)在后台API会告诉前端(JavaScript函数)来显示什么,什么不是,什么以何种方式呈现。您还需要使它非常严格,同时建立的数据/旗阵,并通过API将使用前端(HTML / JS / CSS)实际构建你的网站返回的JSON。

这么多的理论......我知道,但一个应用程序的架构方法是很难用一个例子来解释。但对于进一步解释/例子,我完全@Eugene Anisiutkin(打破它)同意。

© www.soinside.com 2019 - 2024. All rights reserved.