我写了一个Web应用程序,我想允许其他开发人员从中获取信息。
我正在处理的服务器并不是那么棒,并且无法处理那么多请求,因此我们的想法是为每个想要查询我们信息的人生成并分配api密钥。使用Api密钥,我可以限制每日请求,也可以收集一些统计信息,以查看哪些信息对其他开发人员非常有用。
问题是,我关注它的安全方面。由于Api密钥将被发送到我们的服务器(通过GET / POST等),有人可以使用wireshark嗅探请求,并且不费力地获取开发人员API密钥,对吧?
我考虑过生成一个密钥和一个API密钥。然后我可以指示其他开发人员连接它们并将它的哈希发送到我们的API。然后我会验证哈希是否有效并允许请求......但是同样的问题会持续存在。黑客仍然可以嗅探该哈希,并代表其他开发人员的应用程序发出请求。
所以我的问题是
你们有什么想法?
答案 0 :(得分:2)
关于嗅探,您的问题可以通过服务器上的HTTPS解决。
答案 1 :(得分:2)
我认为你在这里试图解决一堆不同的问题。
如果您的目标是限制对服务器的请求数量,则应创建一个限制机制。这是非常重要的,但我将其基于IP地址而不是许可证密钥 - 单个许可用户可能会因许多请求而淹没您的系统。您可以通过IP地址进行限制,而无需实施许可证机制。
如果您想创建许可方案,您需要了解加密等 - 这是一个非常重要的问题。例如,如何阻止合法用户与所有朋友共享许可证密钥?你如何阻止黑客窃取你的密钥并与他的所有朋友分享?
有很多解决方案 - 它们都会给用户带来一定程度的痛苦。例如,您可以在HTTPS上运行您的服务;这会阻止窥探,但会降低性能。您可以为您的服务颁发“令牌”,该服务在一定数量的使用后到期;获取新令牌需要加密交换(可能会检查您的IP地址)。您可能需要“质询/响应”类型的逻辑(包括IP地址验证)。所有这些步骤都会让您的用户更加努力;他们可能不会因为他们必须做的额外工作而感谢你。
答案 2 :(得分:1)
这意味着您可以验证发件人,而无需通过网络发送密码(请注意,内容仍然不安全 - 但是您要避免在每次请求时通过线路传递密钥)。缺点是开发人员实施起来很复杂。即使你使用oAuth 1.0模式,它有一些库,但它有点开销。
我在3scale工作,我们的一些工具也可能有用 - 我们的系统提供API密钥,oAuth秘密共享以及开箱即用的API速率限制(http://www.3scale.net和PHP库是在这里:https://github.com/3scale/3scale_ws_api_for_php)。