【问题标题】:Disabling access to a servlet using url使用 url 禁用对 servlet 的访问
【发布时间】:2023-03-22 22:49:01
【问题描述】:

我有一个包含多个 servlet 的 Web 应用程序。我不希望用户通过在地址栏中输入 url 来访问其中一些 servlet。只有当用户单击网页上的某些链接时,才能访问这些 servlet。我认为这可以使用文件管理器来完成,但我不确定是否有方法可以通过单击链接或通过地址栏知道是否到达了 servlet。

【问题讨论】:

  • 嗯,有一种方法,但不是万无一失的。您可以在单击链接时设置Referer 标头,并让过滤器检查每个请求的此标头。这里的主要缺陷是任何拥有正确工具的人都可以更改该标头的值并绕过该检查。

标签: jakarta-ee servlets filter


【解决方案1】:

调用链接单击的 javascript 函数并将路径变量“clicked=yes”附加到 url,如下所示。

function myFunction(linkClicked){
    var url = linkClicked.getAttribute("href");
    url = url + "?clicked=yes";
    return false;
}

<a href="" name="myLink" onClick="myFunction(this)"></a>

然后在您的 sevlet 中检查“clicked”参数的值,如果它为 null 或为空,则您可以通过在地址栏中输入 url 来了解该 url。

如果值为"clicked" is "yes",那么我们就知道链接被点击了。

请注意,我没有测试过这段代码,可能会有一些错误,但你明白了。

【讨论】:

  • 这仍然不能解决主要问题,因为如果用户在 "?clicked=yes" 之外输入 url 并按回车,那么他/她将能够通过。跨度>
猜你喜欢
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2014-10-18
  • 2013-03-17
相关资源
最近更新 更多