一. Ruby on Rails 構建 API 的基礎

1. 創建 Rails 應用程序

rails new secure_api
rails generate scaffold Todo title:string completed:boolean

配置路由支持 JSON API:

Rails.application.routes.draw do
 namespace :api, defaults: { format: :json } do
 namespace :v1 do
 resources :todos
 end
 end
end

API 端點設置在 /api/v1 下。


二. 身份驗證與授權

1. 使用 Devise 進行身份驗證

Gemfile 中添加:

gem 'devise'

安裝 Devise 并生成用戶模型:

bundle install
rails generate devise:install
rails generate devise User
rails db:migrate

在控制器中添加身份驗證過濾器:

class Api::V1::PostsController < ApplicationController
 before_action :authenticate_user!

 def index
   posts = Post.all
   render json: posts
 end
end

2. 基于角色的授權

使用 CanCanCan 管理權限:

gem 'cancancan'
bundle install
rails generate cancan:ability

定義角色和權限:

class Ability
 include CanCan::Ability

 def initialize(user)
   user ||= User.new
   if user.admin?
     can :manage, :all
   else
     can :read, Todo
     can :create, Todo
     can :update, Todo, user_id: user.id
     can :destroy, Todo, user_id: user.id
   end
 end
end

控制器中加載權限:

class Api::V1::TodosController < ApplicationController
 load_and_authorize_resource

 def index
   render json: @todos
 end
end

三. 數據驗證與凈化

驗證輸入數據

class Todo < ApplicationRecord
 validates :title, presence: true
 validates :completed, inclusion: { in: [true, false] }
end

防止 SQL 注入和 XSS

safe_name = ActiveRecord::Base.sanitize(params[:name])

確保 API 通信使用 HTTPS


四. 基于令牌的身份驗證

使用 devise_token_auth 實現高安全性:

gem 'devise_token_auth'

安裝并配置:

rails generate devise_token_auth:install User auth
rails db:migrate

保護控制器路由:

class Api::V1::BaseController < ApplicationController
 before_action :authenticate_user!
end

五. 防止 API 濫用和攻擊

1. 使用 Rack::Attack 節流

Rack::Attack.throttle('requests by ip', limit: 100, period: 1.minute) do |request|
 request.ip
end

2. 配置 CORS 策略

gem 'rack-cors'
config.middleware.insert_before 0, Rack::Cors do
 allow do
   origins 'https://your-allowed-domain.com'
   resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete]
 end
end

六. 加密敏感數據

使用 bcrypt 加密密碼:

gem 'bcrypt'

模型中啟用安全密碼:

class User < ApplicationRecord
 has_secure_password
end

驗證密碼:

user = User.find_by(email: params[:email])
if user&.authenticate(params[:password])
  # 身份驗證成功
else
  # 憑據無效
end

七. 總結

通過身份驗證、授權、數據驗證、濫用防護和加密措施,您可以顯著提升 API 安全性。Ruby on Rails 提供豐富工具和庫,幫助開發者構建強大而安全的 API。牢記安全最佳實踐,并定期更新應用程序,應對不斷變化的安全威脅。


推薦輔助工具

原文鏈接: https://escape.tech/blog/ruby-on-rails-security-guide/

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
API 身份驗證全解析:托管認證在 Cyclr 平臺中的實踐指南
下一篇
去中心化身份(DID)與API安全:企業轉型的核心指南
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
精品粉嫩超白一线天av| 国产精品18久久久久久久网站| 久久久久97国产精华液好用吗| 亚洲3atv精品一区二区三区| 99re成人在线| 亚洲综合区在线| 欧美浪妇xxxx高跟鞋交| 蜜臀久久久久久久| 国产亚洲一区二区三区在线观看| 国产精品中文字幕日韩精品| 国产精品美女视频| 欧美视频一区二区三区| 欧美在线不卡视频| 国产盗摄一区二区三区| 日韩欧美专区在线| 精品一区二区三区视频在线观看| 日韩亚洲欧美高清| 激情亚洲综合在线| 亚洲欧美日韩一区| 7777精品伊人久久久大香线蕉 | 日韩在线a电影| 欧美xxxxx牲另类人与| 国产不卡视频在线观看| 亚洲自拍偷拍图区| 精品88久久久久88久久久 | 蜜臀91精品一区二区三区| 欧美一区在线视频| 成人av片在线观看| 久久成人免费网站| 亚洲高清免费观看| 国产精品福利一区| 26uuuu精品一区二区| 在线看日韩精品电影| 国产xxx精品视频大全| 午夜免费久久看| 成人免费在线视频| 国产清纯美女被跳蛋高潮一区二区久久w| 在线看一区二区| www.久久精品| 国产麻豆精品95视频| 麻豆成人久久精品二区三区红 | 欧美男男青年gay1069videost| 国产91在线观看| 国产在线观看一区二区| 日韩福利电影在线观看| 亚洲va在线va天堂| 午夜久久久久久| 亚洲妇女屁股眼交7| 亚洲男人电影天堂| 日韩毛片视频在线看| 欧美xxx久久| 精品国免费一区二区三区| 欧美一区二区播放| 精品免费视频.| 精品国产乱码91久久久久久网站| 欧美一区二区三区小说| 欧美精品在线观看播放| 欧美精品色一区二区三区| 欧美性一区二区| 欧美日韩中文字幕一区二区| 欧美日本在线播放| 欧美一区二区三区日韩视频| 欧美一区二区福利视频| 日韩欧美亚洲一区二区| 日韩免费成人网| 精品国产区一区| 久久九九99视频| 亚洲欧洲99久久| 亚洲国产精品自拍| 日本91福利区| 懂色av一区二区三区蜜臀| av午夜精品一区二区三区| 色综合色综合色综合色综合色综合 | 久久久精品黄色| 国产精品成人一区二区三区夜夜夜 | 美女视频黄久久| 国产在线日韩欧美| 91网站在线播放| 欧美一区二区三区思思人| 久久天天做天天爱综合色| 国产精品毛片无遮挡高清| 一区二区三区电影在线播| 久久国产精品99久久人人澡| 91免费视频观看| 久久亚洲精品小早川怜子| 亚洲成av人影院| www.在线成人| 久久午夜色播影院免费高清| 亚洲制服丝袜在线| 成人午夜电影网站| 日韩欧美中文字幕一区| 一区二区三区在线看| 国产一区二区免费视频| 欧美久久久久久久久| 亚洲视频在线观看三级| 激情都市一区二区| 欧美久久久久久久久中文字幕| 成人欧美一区二区三区黑人麻豆| 麻豆国产91在线播放| 欧美日韩国产中文| 依依成人精品视频| 99在线精品一区二区三区| 欧美成人乱码一区二区三区| 一区二区三区高清| 色偷偷一区二区三区| 国产欧美一区二区在线| 精品一区二区三区免费播放| 91精品国产综合久久精品图片| 亚洲影视在线播放| 色综合久久久久综合| 国产精品你懂的| 波多野结衣亚洲| 日本一二三四高清不卡| 国产成人av资源| 国产精品美女久久久久高潮| 国产精品一级二级三级| 欧美激情在线一区二区三区| 粉嫩欧美一区二区三区高清影视 | 国产在线一区观看| 精品粉嫩aⅴ一区二区三区四区| 免费观看久久久4p| 欧美v国产在线一区二区三区| 国产最新精品免费| 国产精品美女久久久久久久久久久 | 欧美国产成人在线| 91网站在线观看视频| 亚洲韩国精品一区| 日韩欧美在线1卡| 国产成人激情av| 伊人夜夜躁av伊人久久| 欧美人狂配大交3d怪物一区| 麻豆国产91在线播放| 国产精品系列在线| 欧美日韩黄色一区二区| 极品少妇xxxx精品少妇| 国产精品免费aⅴ片在线观看| 色婷婷久久99综合精品jk白丝| 五月婷婷激情综合| 国产日韩欧美精品在线| 在线看不卡av| 韩国三级电影一区二区| 亚洲日本韩国一区| 精品久久免费看| 欧洲视频一区二区| 国产一区二区在线观看免费 | 色婷婷激情综合| 久久se精品一区二区| 亚洲免费观看高清完整版在线 | 国产精品情趣视频| 欧美一卡2卡3卡4卡| 99vv1com这只有精品| 日本少妇一区二区| 亚洲一区二区中文在线| 中文字幕第一区二区| 日韩欧美精品在线视频| 在线亚洲+欧美+日本专区| 国产精品99久久不卡二区| 日韩电影免费一区| 一区二区久久久久| 亚洲图片另类小说| 国产网站一区二区三区| 日韩亚洲欧美在线| 91精品婷婷国产综合久久竹菊| av一本久道久久综合久久鬼色| 国产一区二区美女| 狠狠色丁香婷婷综合| 久久电影网电视剧免费观看| 日韩精品成人一区二区在线| 一区二区三区日韩欧美| 亚洲欧美一区二区三区极速播放| 久久精品男人的天堂| 久久亚洲综合色一区二区三区| 日韩一区二区免费在线电影| 欧美一区二区三区日韩| 日韩一区二区免费在线电影| 日韩一本二本av| 日韩精品专区在线影院重磅| 欧美一区二区三区在线电影| 制服视频三区第一页精品| 欧美一区二区在线播放| 欧美精品一区二区三区视频| 2021久久国产精品不只是精品| 欧美mv和日韩mv国产网站| 精品国产一区二区亚洲人成毛片| 日韩欧美亚洲国产另类| 国产欧美日韩亚州综合| 中文字幕亚洲精品在线观看| 亚洲综合色成人| 午夜精品影院在线观看| 蜜乳av一区二区| 波多野结衣的一区二区三区| 欧美在线观看一区二区| 日韩欧美精品在线| 亚洲欧洲日产国产综合网| 亚洲大片精品永久免费| 激情图片小说一区| 色狠狠色狠狠综合| 亚洲精品一区二区三区福利| 亚洲精品免费播放| 国产在线精品视频|