【问题标题】:How can I prevent anything other than my iPhone app from communicating with my Rails webapp?我怎样才能防止我的 iPhone 应用程序以外的任何东西与我的 Rails webapp 通信?
【发布时间】:2011-04-16 04:35:41
【问题描述】:

我正在深入研究 Web 开发,并且已经构建了一些基本的 Rails 应用程序,但现在我想开始学习如何安全地将我的 iOS 应用程序与我的 Rails 应用程序连接起来。例如,如果我希望我的 iOS 应用程序通过在 url 中传递参数来查询我的 Rails webapp 以获取数据库中的一些数据...

http://mywebapp/mycontroller/search?q=keyword

...我可以使用哪些常见的 Web 开发方法来防止除我的 iOS 应用程序之外的任何东西(或任何人)成功执行该搜索查询?

我确信我试图阻止的这种类型的伪造有一个正式的名称,但我对 Web 开发还很陌生,而且我还在学习所有的行话。非常感谢您的智慧!

【问题讨论】:

    标签: iphone ruby-on-rails ios


    【解决方案1】:

    使用 Rails 在protect_from_forgery 中使用的技巧,为您的 iphone 应用程序生成唯一密钥。然后确保您的应用程序将该请求中的密钥传递给服务器。然后您可以写一个before_filter 以确保请求拥有密钥。如果是,那么您处理请求。如果没有,那么您会返回一条错误消息,其中包含一条解释他们无法访问的原因的自定义消息。

    【讨论】:

      【解决方案2】:

      您可以创建一个哈希并将其用作令牌,每次调用都会传递该令牌以识别您的应用程序(应用程序中的硬编码值)和会话(客户端的当前 IP 地址。)所以:hard_coded_value + ip_addressed -> MD5/SHA1(无论哪个)= 令牌。您的服务器还将拥有硬编码值的副本以及调用客户端的 IP 地址,执行相同的散列函数并比较结果。如果它们匹配,那就是您的应用程序。如果不是,那就不是。

      【讨论】:

      • 好一个。在执行此操作之前,还要检查请求对象中的用户代理是 ios。
      • 谢谢,保罗!我正在尝试实施这种方法,但我发现获取 iOS 设备的 IP 地址非常困难。我发现的每一种方法都是一些可怕的黑客攻击,或者它使用了一个私有 API,这会使我的应用程序从应用程序商店中被退回。乍一看,Apple 似乎不希望开发人员访问这些数据,这是愚蠢的。还在寻找...
      • 如果我不能轻易获得IPAddress,你能想到我可以用另一条数据代替它吗?再次感谢!
      • 您可以尝试从这样的网站读取 IP:whatismyip.com IP 是一个很好的数据,因为它是瞬态的。如果读取它不起作用,您可以只使用一个硬编码值,该值与客户端从服务器请求的任何资源一起进行哈希处理。
      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2023-01-22
      • 1970-01-01
      • 2012-11-22
      • 2016-02-14
      • 1970-01-01
      相关资源
      最近更新 更多