用户是否使用了网址栏?

时间:2019-02-15 00:27:30

标签: url block referrer

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

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

问题是我无法使用HTTP引荐来源网址,因为当URL更改时,我的应用程序不会加载新页面。它只是在页面上加载新数据,因此我的引荐来源网址始终是登录屏幕。另外,还有各种触发器可以更改URL以自动加载此数据,因此,我需要确保用户明确输入了url栏并按Enter。

是否还有其他方法可以知道用户是否从URL栏中输入了内容,以便我可以阻止该请求?

1 个答案:

答案 0 :(得分:0)

因此,您说的是页面使用JavaScript API(例如fetch)从服务器动态加载HTML文件,然后使用JavaScript History API用包含以下内容的HTML文件名更新URL。被加载?那么第一个URL是openMenuItemClick,然后在执行登录检查后将URL更改为/page?name=logincheck.html,而无需重新加载页面?

如果这就是您应用程序的工作方式,则从理论上讲您可以禁用URL重写-该应用程序仍可以知道它在哪个页面上,因为JavaScript可以将当前页面保存到变量中。这样,用户将永远不会看到带有/page?name=thetool.html的URL,而绕过登录检查。但是此设置不会保护您免受恶意黑客的攻击,他们可以猜测thetool.html是存在的页面。

如果要阻止人们加载特定页面,请在服务器端 进行检查。如果您使用JavaScript进行了安全检查,那么恶意用户可能会告诉其浏览器忽略该JavaScript,而是运行自己的JavaScript,而不进行检查。

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

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