簡體   English   中英

如何為我的應用程序創建安全的Rails REST Api?

[英]How to create a secure Rails REST Api for my app?

所以我正在制作一款需要網絡后端的Android應用。 該網站正在使用Ruby on Rails構建。 它有面向客戶端(漂亮的HTML頁面)但我也希望它能夠通過JSON向我的Android應用程序提供信息。 但是,我不希望整個世界能夠獲得這個JSON,因為它包含一些可能有危險的信息。 如何鎖定JSON格式的頁面並仍然可以從Android應用程序訪問它們?

為了記錄,我使用Rails 3.1 has_secure_password進行現場用戶身份驗證,我希望有一些為HTML請求打開但是為JSON鎖定的路由(例如, /users url應該可以作為HTML訪問但是作為JSON,它只能通過我的應用程序訪問一些安全方法)。

有沒有辦法做到這一點,或者API必須是一個單獨的應用程序(這將是非常不方便的數據庫設置等)?

澄清:基本上我想要做的是從我的Rails應用程序創建一個基於令牌的安全JSON API,我不想使用Devise或某些東西會迫使我改變我已經存儲我的用戶/傳遞信息的方式。

根據您使用的rails版本,部分工作已經使用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中提取相同的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM