5

だから私はウェブバックエンドを必要とするAndroid用のアプリを作っています。WebサイトはRubyonRailsで構築されています。クライアント側(かなりHTMLページ)がありますが、JSONを介してAndroidアプリに情報を提供できるようにもしたいと思います。ただし、危険な可能性のある情報が含まれているため、このJSONを全世界が取得できるようにしたくありません。JSON形式のページをロックダウンし、Androidアプリからアクセスできるようにするにはどうすればよいですか?

記録として、オンサイトユーザー認証にRails 3.1has_secure_passwordを使用しています。また、HTMLリクエストに対しては開いているが、JSONに対してはロックされているルートが必要です(たとえば、/usersURLはHTMLとしてアクセス可能である必要がありますが、JSONとしてアクセス可能である必要があります)何らかのセキュリティ方法を使用して、アプリからのみアクセスできるようにする必要があります)。

これを行う方法はありますか、それともAPIを別のアプリにする必要がありますか(DBのセットアップなどで非常に不便になります)?

明確化:基本的に私がやりたいのは、Railsアプリから安全なトークンベースのJSON APIを作成することです。また、Deviseなど、ユーザー/パス情報の保存方法を変更せざるを得ないものは使用したくありません。

4

1 に答える 1

2

使用しているレールのバージョンに応じて、作業の一部はすでにrespond_toメソッドで実行されています。これにより、同じURLに対してJSONとHTMLの両方を提供できます。ここで、JSONアクセスをロックダウンするために、アプリのアクセスをチェックするメソッドを定義し、JSON応答を提供するたびにそれを呼び出すことができます

def with_access_check()
  if allowed # Or any verification you want.
    yield
  else
    # Raise a 403 maybe?
  end
end

# Then in every method that needs a check:
respond_to :json { with_access_check { render :json => @stuff } }

最後に、jsonビューとhtmlビューで非常に異なるデータを提供している場合(両方に同じURLを使用している場合は奇妙です)を除いて、攻撃者/悪意のあるユーザーがHTMLからまったく同じデータを抽出するのを妨げるものは何もないと考えてください。 。

于 2012-09-22T09:03:22.300 に答える