如何通过只允许可信域安全的API?(How do I secure an API by only a

2019-09-20 08:54发布

如何通过只允许可信域安全的API?

细节

我建立一个REST API。 我需要一种方法来分发API密钥,但只允许他们从他们注册的域名的工作。

主要的问题是需要被嵌入它可以很容易被反编译窃取API密钥Flash文件我的API密钥。 如果Flash,使这个不可能的我可以使用JavaScript来代替。

我听到很多人说使用$_SERVER['HTTP_REFERER'] 但是,这是很容易伪造。

  • 如何建立一个确保请求从允许的域来的API?
  • 如何创建绑定到一个域的API密钥?
  • 如何通过只允许可信域安全的API?

相关问题#1:

这些问题都涉及,但并没有完全回答我的问题。 想我只想把他们在这里以供将来参考。

  • 谷歌API密钥和域检查
  • 如何谷歌地图保护他们的API密钥? 如何使类似的东西?

Answer 1:

JavaScript就无法帮助你在这里 - 问题是,键被存储在客户端,这意味着它是不安全的。 你可以把它的肯定是一个攻击者有点困难(比如像你说的检查引荐),但在这一天所有的服务器可以验证的到底是什么,关键是正确的,因为密钥很容易被偷走的不是非常有帮助。

这可以固定的方式是由具有不管你是谁给他们,而不是在客户端运行在服务器上的私钥。 根据您的需求,这可能是不可行的。

一种可能使它有点困难,攻击者是利用网站锁定技术,只允许SWF调用API,如果它是在一个合适的域名。 见http://blog.boogatech.com/as3_tutorial_site-locking_your_flash_project/的一个例子。 但是请注意,这是客户端的安全性-与sitelocking的目标通常是刚刚从玩游戏的其他网站停止人(即使这样也不能阻止最敬业的攻击者)。 在你的情况,你正在处理的服务器的安全性 - 服务器不知道有关SWF,它只知道它正被馈送的参数,因此攻击者可以直接绕过SWF和客户端的安全,并呼吁从别的地方的API 。

我劝你要想想你正试图阻止攻击什么和攻击者(你为什么要扎API密钥域?)。 这将帮助您规划安全试图更好。 举例来说,如果你没有运行的超临界API,你可以决定投入几件事情,使它更难攻击者访问的API是可以接受的,用知识,你不能阻止一个非常专门的攻击者。



文章来源: How do I secure an API by only allowing trusted domains?