我的解决方案是否足够好以确保对我的API的请求来自我自己的网站/移动设备?

时间:2013-09-23 02:25:45

标签: api

我正在构建一个将由合作伙伴的网站使用的API。该网站将位于同一域(api.example.com和www.example.com)。将来我们可能会有一个使用此API的移动应用。

我不想让某人使用我的api作为他们自己的网站/应用程序。所以我想有办法验证我的网站到我的API。 我在SO中搜索过,发现我必须在我的网站上设置一个Cookie,所以我发送每个ajax请求。很公平,但我如何生成这个cookie?如果我在API中调用方法,我必须验证它的来源,因此它无法解决。

我可以在两侧设置加密密钥并使用salt加密某些信息并发送到api以检查信息。 我不是安全专家,但它似乎可以解决我的问题。它是否正确? 当用户登录我的网站时,使用用户的登录令牌更改此验证是否安全?

谢谢!

1 个答案:

答案 0 :(得分:2)

您所描述的内容称为CSRF(跨站点伪造请求)。

为防止有人从您的请求外部访问您的API,您的网站应在会话中存储令牌,为每个API请求传递此令牌,然后API应验证令牌。

关于这个主题有很多好文章,包括许多具体的例子。

以下是其中一个preventing-cross-site-request-forgeries