0

我正在使用 Rails 开发 Shopify 应用程序,并且一直在使用查询字符串来检测哪个商店正在访问它。这似乎很容易受到攻击,因为用户可以更改 url 以访问其他人的设置。

这是一个例子:

我单击我的应用程序上的首选项链接并重定向到http://example-app.com/preferences?shop=example.myshopify.com并获取与商店相关的设置页面:example.myshopify.com

那么如何阻止用户将查询字符串更改为http://example-app.com/preferences?shop=notmystore.myshopify.com并登录到他们不拥有的商店?

我应该使用身份验证 gem ( https://www.ruby-toolbox.com/categories/rails_authentication ) 并让每个用户创建一个用户名和密码以防止欺骗攻击吗?

4

3 回答 3

1

有趣的。有现场制作的 Shopify 应用商店应用可以完成您对 Paul 所做的工作。当我找到一个这样的应用程序时,我通知了 Shopify,他们立即将应用程序开发人员包裹起来。他很快就吸取了教训,希望非常尴尬。

Shopify 合作伙伴帐户(免费获取)为您的应用程序提供了一个很好的 API 令牌和相应的秘密,您可以使用它来确保当您让商家尝试访问您的应用程序时,传入的商店

  • 实际上是安装了您的应用程序的商店,并且,
  • 他们有权使用您的应用程序

你真的应该检查一下。

于 2013-06-21T22:12:55.630 回答
1

我发现解决方案是始终从会话变量而不是查询字符串中检索商店网址:

session[:shopify].url

还要确保它位于每个控制器的顶部,以确保 shopify 会话存在:

around_filter :shopify_session

如下所示:https ://github.com/Shopify/shopify_app/blob/f9aca7dfc9c29350f7f2c01bb72f77a54ece2b77/lib/generators/shopify_app/templates/app/controllers/home_controller.rb

于 2013-06-22T19:51:26.550 回答
0

这个问题可能过于本地化,但我会尽量给你一个方向。

如果您使用查询字符串作为唯一的身份验证方法,那么是的,您将受到黑客攻击/欺骗等。您需要进行某种形式的身份验证。- Shopify 提供了一个 API,可以为您处理其中的部分/大部分。

https://github.com/shopify/shopify_api

于 2013-06-21T21:58:19.097 回答