php - AJAX:单页应用程序结构/安全

标签 php javascript ajax security xmlhttprequest

我正在使用 AJAX 开发网络/移动应用程序。该应用程序有 4 个页面:登录页面和 3 个仅向登录用户显示的 protected 页面。

我打算使用单页应用程序模式,因此所有 4 个页面都将立即加载,每个页面都在自己的 DIV id 中,并且最初只有登录页面可见。

一旦用户输入了他的用户名/密码,我就创建了一个 XMLHttpRequest 并与内部 PHP 脚本通信,后者又使用准备好的语句来检查数据库中是否存在用户名/密码,并返回 true 或 false 给XMLHttpRequest。

如果结果为真,我将使 protected DIV 可见并从服务器加载必要的数据,创建另一个 XMLHttpRequest 并通过另一个 PHP 脚本与数据库进行交互。当用户在其他 protected 页面之间导航时,将重复此步骤。我还计划实现 cookie 以保持用户登录,再次使用 XMLHttpRequest/内部 PHP 脚本。

下面有一张描述该过程的图片。

问题:

  • 这个结构看起来不错吗?有没有我没有预见到的可能出现的问题?
  • 结构安全吗?我有什么办法可以进一步加强它?

enter image description here

最佳答案

只要您确保每个数据请求都受到登录系统的保护,以防止向未经身份验证的用户提供数据,该结构就可以了。

此外,您还需要确保在用户注销时将所有数据清除出 DOM。这可以通过强制页面刷新 window.location.reload() 或通过手动删除所有包含数据的 DOM 节点并覆盖任何变量来轻松完成。考虑使用您的应用程序的用户,然后注销,然后另一个用户开始使用同一设备。如果您在注销时不刷新数据,第二个用户在未经身份验证的情况下可以打开任何 DOM 工具,例如 Firebug/Chrome Dev Tools 并查看最后一个用户的敏感数据。

不要忘记在 SQLi、XSS(包括基于 DOM 的 XSS——而不仅仅是反射/存储 XSS)和 session 安全( session 劫持等)方面关注一般网络应用安全。

关于php - AJAX:单页应用程序结构/安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15141525/

相关文章:

javascript - 如何从 mvc Controller 获取列表以使用 jquery ajax 查看

php - 如何在选择 4 个表单字段之一后以交互方式更新 HTML 表

javascript - Hapi.js 内容协商

javascript - Express js 4,Parse.com JSON 错误

javascript - 每 2 秒重复一次 PHP 函数

javascript - Laravel 未捕获引用错误 : $ is not defined

跨用户的 PHP session 范围

php - 在非对象 app\Controller\CarriesController.php 第 5 行调用成员函数 create()

php - codeigniter 在 Controller 末尾加载 View

javascript - 数组列表 Javascript