为了账号安全,请及时绑定邮箱和手机立即绑定

HttpServletRequest-如何获取引用URL?

HttpServletRequest-如何获取引用URL?

千巷猫影 2019-12-26 10:01:42
我需要在Java Servlet中记录链接到我的网站的URL。
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

在HTTP referer标头中可用。您可以在servlet中获得它,如下所示:


String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.

但是,您需要意识到这是一个由客户控制的值,因此可以被欺骗为完全不同的东西,甚至可以删除。因此,无论返回什么值,您都不应将其用于后端中的任何关键业务流程,而应仅用于表示控制(例如,隐藏/显示/更改某些纯布局部分)和/或统计信息。


有兴趣的人可以在Wikipedia中找到有关拼写错误的背景。


查看完整回答
反对 回复 2019-12-26
?
心有法竹

TA贡献1866条经验 获得超5个赞

实际上,它是: request.getHeader("Referer")或什至更好,并且可以100%确信, request.getHeader(HttpHeaders.REFERER)HttpHeaders在哪里com.google.common.net.HttpHeaders

查看完整回答
反对 回复 2019-12-26
?
慕沐林林

TA贡献2016条经验 获得超9个赞

所有人都提到过


request.getHeader("referer");

与接受的答案相比,我想添加更多有关引荐标头安全性方面的细节。在“开放式Web应用程序安全性项目(OWASP)”备忘单中,“ 跨站点请求伪造(CSRF)预防备忘单”下提到了引荐标头的重要性。


对于此推荐的Same Origin检查更重要的是,JavaScript无法设置许多HTTP请求标头,因为它们位于“禁止”标头列表中。只有浏览器本身才能为这些标头设置值,从而使它们更值得信赖,因为甚至XSS漏洞都不能用来修改它们。


这里推荐的Source Origin检查依赖于以下三个受保护的标头:Origin,Referer和Host,这使其自身具有相当强大的CSRF防御能力。


您可以在此处参考“ 禁止的标头列表”。用户代理(即:浏览器)拥有对这些标头而不是用户的完全控制权。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 712 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信