当会话超时时使用弹出模式时,是否有一种安全的方法可以隐藏以前通过PHP注入页面的数据?有人向我指出,使用模糊屏幕的覆盖层是不够安全的,因为未经授权的用户可以简单地从登录用户停止的地方开始,并通过任何数量的工具检查html。
在这种情况下,是否有任何方法可以确保敏感数据的安全,同时在用户超时时将其保留在当前页面上?已经排除了将用户重定向到常规登录页面的可能性,否则我会这么做。
您询问是否可以修改已经通过PHP加载的页面,PHP是一种在服务器上运行的语言和上下文,而不是在客户端上运行。那么,简短的答案是否定的。你可以(重新)加载一个全新的页面,或者你必须使用Javascript/API调用来执行你想要的细节。
@Conceptz已经指出,通过重定向到logout.php
,您可以使所有cookie等无效,但我相信您只需要了解客户端的详细信息:如何清除DOM,直到采取适当的操作。鉴于此,您的解决方案将以Javascript的形式提供客户端帮助。
那么,要真正回答这个问题,快速、肮脏和不专业的方法在道德上相当于
document.body.innerHTML = '';
这是从轨道发射核武器的方法,但会奏效。任何不那么激烈的事情都需要遍历所有敏感的DOM元素,并用伪或伪内容替换内容。同样,所有客户端,使用Javascript。没有PHP。
如果您绝对必须使用PHP,一个选项是使用API调用从服务器获取更新的空HTML片段,并使用响应来替换敏感数据,但同样,仍然使用Javascript进行调用,而仍用Javascript替换实际的DOM元素。
如果您决定在Javascript中进行清除/替换(以避免页面重新加载),那么不要忘记所有DOM编辑最初来自的变量——根据攻击者的动机,JS变量是获取敏感数据的一种出色方法。对于每个敏感变量和数据结构,您需要执行以下道德等效操作:
sensitive_variable = null;
尽管如此,如果您使用的是具有数据绑定的现代框架,那么如果您只更新或清除敏感的JS变量,"清除所有敏感的DOM元素"可能会被完全省略。