我正在为游戏统计系统创建自己的API(在PHP中)。 我希望用户能够从他们的游戏中登录系统。
基本上,游戏是用GM制作的:HTML5(适用于HTML5的GameMaker),这意味着它只是模糊处理,但仍然可以使用任何JavaScript调试器读取。
要使其工作,用户必须包含一个将连接到我的API系统的PHP库。 但是,我想通过使用API密钥限制访问。
如果我发送带有请求的API密钥,它将是可见的(例如,使用Firefox的开发者控制台)。使用该API密钥,任何人都可以“登录”并提交统计数据。
我想做的是,使用登录请求以加密形式发送托管游戏的域。 (只是从我的PHP库向服务器发出一个简单的GET请求)。然后服务器必须解密该字符串(加密域/ IP)并检查它是否与API密钥匹配,该密钥也随请求一起发送。
但我想知道,这实际上是多么安全。
如果不安全,那会是更好的方法吗?
答案 0 :(得分:1)
您可以考虑使用OAuth 1.0(如果您有SSL连接则使用2.0)。这是一个已经证明自己适用于Twitter和Facebook等网站的协议,但实施起来相当简单。
http://tools.ietf.org/html/rfc5849
但是,请注意,最终没有安全库是安全的。 iOS5的OAuth库在第一个开发者预览版发布一天后就被破解了。基本规则:如果用户有权访问二进制版本,则不安全。
答案 1 :(得分:0)
这是对CWE-602的隐含违规,永远不会成为此问题的解决方案。攻击者始终可以使用TamperData之类的工具来拦截和修改请求,或者通过其他方式修改代码。也许你正在寻找“(In)安全,虽然默默无闻”。
答案 2 :(得分:-1)
选项2:
编写自己的协议。请务必考虑所有这些因素:
您需要API系统,因此请包含API密钥。