用户是否使用了URL栏?

问题描述 投票:0回答:1

我需要知道是否有人使用URL栏导航到我的应用程序的特定页面,或者他们是否点击了链接到达那里。

我想阻止用户使用URL栏导航到某些页面。

问题是我不能使用HTTP referrer,因为我的应用程序在URL更改时不会加载新页面。它只是在页面上加载新数据,因此我的引用者始终是登录屏幕。此外,还有各种触发器可以更改URL以自动加载此数据,因此我需要确定用户是否明确键入了url栏并按Enter键。

有没有其他方式知道用户从URL栏输入了什么,所以我可以阻止请求?

url block referrer
1个回答
0
投票

因此,您说您的页面使用JavaScript API(如fetch)从服务器动态加载HTML文件,然后使用JavaScript History API使用已加载的HTML文件的名称更新URL?所以第一个URL是/page?name=logincheck.html,然后在执行登录检查后将URL更改为/page?name=thetool.html,而不重新加载页面?

如果这就是您的应用程序的工作方式,理论上您可以禁用URL重写 - 应用程序仍然可以知道它所在的页面,因为JavaScript可以将当前页面保存到变量中。然后用户永远不会看到thetool.html绕过登录检查的URL。但是这种设置不会保护您免受恶意黑客的攻击,因为它能够猜测thetool.html是一个存在的页面。

如果您想阻止人们加载特定页面,请在服务器端检查正确的位置。如果您使用JavaScript进行安全检查,恶意用户可以告诉他们的浏览器忽略该JavaScript,并运行他们自己的JavaScript而不进行检查。

如何检查服务器端是否有人登录取决于您使用的服务器软件(Apache服务器,Java Spring MVC应用程序,Ruby on Rails应用程序)以及当前登录页面当前如何告知您的其余软件用户已登录(cookie,数据库中sessions表中的一行,保存到本地存储的JSON Web Token)。在不知道您正在使用的软件和身份验证方法的情况下,我无法发出指示,但我可以告诉您这是可能的。

通常,登录应该告诉服务器创建新的用户会话,并在引用该会话的浏览器中保存cookie。每当浏览器请求受保护的页面时,服务器软件应首先检查是否发送了会话cookie,以及会话cookie是否对应于当前有效的会话。如果没有,服务器软件应发送一个空页面,其中包含403 Forbidden状态代码而不是实际页面。

© www.soinside.com 2019 - 2024. All rights reserved.