我正在使用AJAX开发网络/移动应用。该应用程序有4个页面:登录的一个和3个受保护的页面仅显示给登录的用户。
我计划使用单页应用程序模式,因此将立即加载所有4个页面,每个页面都在其自己的DIV ID中,并且最初只能看到登录页面。
一旦用户输入了他的用户/通行证,我就创建了一个XMLHttpRequest并与内部PHP脚本进行通信,后者又使用预准备语句检查数据库中是否存在用户/通道,并返回true或false。 XMLHttpRequest的。
如果结果为true,我将使受保护的DIV可见并从服务器加载必要的数据,创建另一个XMLHttpRequest并通过另一个PHP脚本与数据库连接。当用户在其他受保护页面之间导航时,重复此步骤。我还计划使用XMLHttpRequest /内部PHP脚本实现cookie以保持用户登录。
下面是描述该过程的图像。
问题:
答案 0 :(得分:4)
只要您确保每个数据请求都受到登录系统的保护,该结构就可以了,以防止向未经身份验证的用户提供数据。
此外,您需要确保在用户注销时,将所有数据从DOM中清除。这可以通过强制页面刷新window.location.reload()
或手动删除包含数据的所有DOM节点并覆盖任何变量来轻松完成。考虑使用您的应用程序的用户,然后注销,然后另一个用户来使用相同的设备。如果您在注销时不刷新数据,则未经身份验证的第二个用户可以打开任何DOM工具,例如Firebug / Chrome开发工具,并查看最后一个用户的敏感数据。
不要忘记在SQLi,XSS(包括基于DOM的XSS - 不仅仅是反射/存储的XSS)和会话安全(会话劫持等)方面注意一般的Web应用安全性。