6

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

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

一旦用户输入他的用户/密码,我创建一个 XMLHttpRequest 并与一个内部 PHP 脚本通信,该脚本反过来使用准备好的语句来检查用户/密码是否存在于数据库中,并向 XMLHttpRequest 返回一个真或假。

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

下面是描述该过程的图像。

问题

  • 这个结构看起来好吗?我没有预见到可能出现的任何问题?
  • 结构安全吗?有什么方法可以进一步强化它吗?

在此处输入图像描述

4

1 回答 1

4

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

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

不要忘记关注 SQLi、XSS(包括基于 DOM 的 XSS——不仅仅是反射/存储的 XSS)和会话安全(会话劫持等)方面的一般 Web 应用程序安全性。

于 2013-02-28T17:18:22.223 回答