【问题标题】:AJAX: Single Page Application Structure/SecurityAJAX:单页应用程序结构/安全性
【发布时间】:2013-02-14 23:56:25
【问题描述】:

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

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

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

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

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

问题

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

【问题讨论】:

  • JPEG 不是最适合保存此类图表的格式。顺便说一句,您使用的是 HTTPS,不是吗?
  • 是的,我在 PHP 服务器端脚本上使用 HTTPS。

标签: php javascript ajax security xmlhttprequest


【解决方案1】:

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

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

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

【讨论】:

  • 我正在关注 SQLi 和 XSS,但我忘记了从 DOM 和基于 DOM 的 XXS 中刷新数据。很好的提醒,谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 2011-11-03
  • 2017-01-04
  • 1970-01-01
  • 2023-04-11
  • 2011-07-29
  • 2012-08-14
  • 2011-07-04
相关资源
最近更新 更多