如何安全地获取HTTP请求中的referer/referrer信息?

6

我正在使用Node.js编写一个图片上传服务。付费客户将能够向我在服务器上设置的端点发送图像文件。但是,每次请求到达时,我需要确认它确实是付费客户发出的请求。我考虑让客户提供他们的域名,然后我只需检查引用标头即可。但是,有人可以轻松地欺骗引用标头并在未付款的情况下使用我的服务。SaaS开发人员如何应对这个技术问题?是否可能在不要求客户拥有一些服务器端代码的情况下解决此问题?


不要依赖客户端来完成这种工作。 - The Alpha
OAuth怎么样? - ghoti
2个回答

2
如果你是在为网站构建外部图像托管服务,或者在分享必须保密和安全的内容,那么请继续阅读。
当然,头文件可以伪造。以下是你不必担心的原因:
1. 方案不美观:要构建一个安全的配置服务,你将不得不开发某种令网站所有者在其端实施的令牌系统。他可能不会与你签约,因为有更简单的选择可用。 2. 伪造必须在客户端完成。很少有“用户”会这样做。两个极客在自己的机器上伪造标头并不会对你产生太大影响。如果他们编写了一些代理或中间件来自动执行此操作,并且许多人开始使用它,那么这可能是一个问题。但这不太可能发生。
我猜你已经知道了,但由于你没有提到 - 它被称为hotlinking。谷歌这个主题以找到更多资源。

1

您无法使用引荐头部对浏览器进行身份验证。

如果您想要对个人进行身份验证,那么您可能需要一个登录系统,让他们提供凭据(用户名/密码),并将这些凭据与您允许的用户库进行比对。如果他们通过了验证,那么您就在浏览器中设置某种类型的 cookie,以指示他们是合法用户。随后来自该用户的请求将包含该 cookie,您可以在每个请求中检查它。

Cookie 需要是您创建的内容,您可以验证它,而且不容易被猜测或伪造(例如从服务器生成的会话或加密令牌)。通常情况下,您会在一段时间后设置 Cookie 的过期时间,以便用户必须重新登录。


同意。有一个名为OAuth的免费开源框架可以为您完成大部分工作:http://oauth.net。这是一个链接,指向JavaScript代码,您可以使用它,因为您在问题中标记了JavaScript:http://oauth.googlecode.com/svn/code/javascript/ - Aaron Brager

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接