2012-10-21 84 views
0

的情况是:Javascript客户端身份验证(使用SSL,无OAuth2)?

我有一个Web API,它是由两个客户端访问:

  • Web App的Javascript编写的,这是精缩
  • iOS应用

SSL是托管API的服务器上的所有设置,并且它工作正常。 API没有User Auth,因为它是一种基于位置的搜索应用程序。

我想确保只有web应用程序和iPhone客户端能够实际向API发出请求。对于iPhone客户端来说很简单 - 服务器和应用程序之间的共享秘密就可以实现,并且它使用SSL进行加密,所以我们不担心有人在监视它。

但是,对于Web应用程序,相同的解决方案将无法正常工作。我不能在代码中留下一个字符串,即使它是在那里加密的,这是所有人都需要的。

基本上,我正在寻找一个很好的解决方案来解决这个问题。我只是想确保它只保留给被允许使用它的客户,但我不确定如果不去实施OAuth,我认为这可能是矫枉过正的。有任何想法吗?

谢谢! 丹

回答

2

它不能完成。即使与oauth。即使假设你的iOS应用程序是安全的,也是错误的:它可以被反编译。在客户端上运行的任何代码都可能被篡改,并且不能被信任为他所说的他。

唯一的问题是:您提供的API是否足够有价值,以及有人想要通过何种方式来破解它。你想为任何想要破解它的人制作它多么困难。

iOS版本确实比javascript版本更安全。在web应用程序中,您可以混淆您的代码以使其更难以破解。你可以(如果你不打算在iOS上使用它)使用java或flash来进一步隐藏你的签名代码(HMAC-签署你的请求,不要只是发送一个共享密钥,你可能认为SSL是安全的,但是在URL被加密之前有一段时间)。

方式的“大家伙”的解决方法是:

  • 不管你建立,假设有人能够破解它(如:使用你的API用于其他目的比你意) 。
  • 想想这真的有多糟糕(注意:他们无法建立一个业务;这将是太容易受到诉讼)。如果孤独的狼使用你的API,它真的是世界末日吗?
  • 如果你关心孤独的狼,尽可能地使它变得难以忍受(但说实话,仅仅从孤独的狼身上花费一些钱,而不是花费2个开发者月份便宜?)
  • 如果有人对你的API有严重的兴趣,试着与黑客达成谅解(比如我喜欢Spotify如何反应的方式)基本上他们说:“嘿,如果你不发布任何使它真的很容易盗取我们的音乐或规避我们的业务模式,我们不会过于努力地阻止你“)
+0

很好的建议。谢谢,克劳德:)我以前从来没有写过API。 我会牢记这一点。我认为我最好的选择就是建立一些基本的反垃圾邮件措施,例如阻止相同的IP每隔10秒发出一次以上的请求。 – basicallydan