如何限制访问我的网页

时间:2011-11-18 15:00:51

标签: security http spring-security

我有一个搜索页面的网址(例如http://x.y.z/search?initialQuery=test)。它不是一个webservice端点,它只是一个基本的url(通过Spring控制器)。访问页面没有安全性,您可以在浏览器中输入链接,它将呈现结果。

我想要的是找到一种方法来阻止其他网站向此网址提交请求,除非他们是特别允许的。

我构建了一个过滤器,它会拦截对此页面的所有请求,并执行一些验证。如果验证失败,那么它们将被重定向到另一个页面。

问题在于执行验证...我尝试使用referer字段来查看请求是否来自“允许”网站,但我知道referer字段并不总是填充并且很容易伪造。< / p>

有没有办法实现这个目标?

我们也有IHS,所以如果有什么可以在那里做的那么会很棒。

5 个答案:

答案 0 :(得分:0)

如果您真的想要保护页面不被访问,我建议实施某种系统以允许用户登录。

您可以尝试检测传入请求的IP地址,但我会想到这很容易被欺骗。

实际上,公开的页面可以对您设置的限制进行任何类型的询问。也许限制页面返回的数据是一个更实用的选项?

这就是网站像Facebook和Twitter实施oAuth以防止未经授权的用户访问资源的原因。

答案 1 :(得分:0)

如果引用页面已经传递了一个名为“token”的POST变量或者某个已经设置为每个应用程序将要访问搜索页面的值,那么你只运行结果。如果您收到带有查询字符串的页面请求,但没有“令牌”的POST值,那么您就知道它是未经授权的请求并可以相应地处理它。

答案 2 :(得分:0)

如果您知道可以联系您的服务的站点的IP,您可以将Apache作为代理并使用access control来允许/拒绝访问特定目录/ URL。

答案 3 :(得分:0)

我认为您希望避免机器人“刮掉”您的网站,但确实希望允许人们访问您的搜索页面。

这是一个相当普遍的要求(谷歌“反刮”)。按稳健性的升序排列(但用户友好性的降序):

  • 根据HTTP标头(IP地址,用户代理,引荐来源)阻止请求。
  • 实施某种CAPTCHA系统
  • 要求用户在访问搜索网址之前登录

你可以购买一些现成的巫术(声称)为你做的一切,但如果你的数据足够有价值,那些想要它的人会雇用机械人来获得它... < / p>

答案 4 :(得分:0)

制作认证证券。 你可以使用openssl或java keytool进行自签名认证 你必须向你的客户发送一份证书副本。

如果此客户端没有此证书,则无法调用您的服务。

并在你的web容器中启用证书。我不知道其他容器 在Apache tomcat中,您可以在ur server.xml的连接器标记中执行此操作