除了我的iPhone应用程序之外,如何防止与我的Rails webapp通信?

时间:2011-04-16 04:35:42

标签: iphone ruby-on-rails ios

我正在进入网络开发,我已经构建了一些基本的rails应用程序,但现在我想开始学习如何使用我的Rails应用程序安全地连接我的iOS应用程序。例如,如果我希望我的iOS应用程序通过在URL中传递参数来查询我的Rails webapp以获取DB中的某些数据...

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

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)