场景是:
我有一个Web API,由两个客户端访问:
SSL都是在托管API的服务器上设置的,它运行正常。 API没有User Auth,因为它是一种基于位置的搜索应用程序。
我想确保只有Web应用程序和iPhone客户端能够实际向API发出请求。对于iPhone客户端来说,它很容易 - 服务器和应用程序之间的共享秘密就可以了,而且它是用SSL加密的,所以我们不担心有人监视它。
但对于网络应用程序,相同的解决方案将无法正常工作。我不能在代码中留下一个字符串,即使它在那里被加密,也是有人需要的。
基本上,我正在寻找一个解决这个问题的好方法。我只是想确保它只保留给被允许使用它的客户,但我不确定如何不去实施OAuth,我认为这可能是过度的。有什么想法吗?
谢谢! 丹
答案 0 :(得分:2)
无法做到。即使有oauth。即使假设您的iOS应用程序是安全的,也是错误的:它可以被反编译。在客户端上运行的任何代码都可能被篡改,并且不能被信任为他所说的人。
唯一的问题是:您提供的API是否足够有价值,以及有多少人会想要破解它。对于想要破解它的人来说,你有多难做到这一点。
iOS版本确实比javascript版本更安全。在webapp中,您可以对代码进行模糊处理,使其更难以入侵。您可以(如果您不打算在iOS上使用它)使用java或flash进一步隐藏您的签名代码(HMAC签署您的请求,不要只是发送共享密码。您可能认为SSL是安全的,但是在网址加密之前还有一段时间......)。
“大家伙”处理这个问题的方式是: