如何在 rails 控制器中正确保护 SQL 注入
How to properly protect SQL injection in rails controller
我有一个控制器,我想知道 Rails 是否已经解析了参数并阻止了 SQL 注入。这是我的控制器的样子:
class V1::JobsController < ApplicationController
include ActionController::HttpAuthentication::Token::ControllerMethods
include ActionController::Serialization
before_action :set_job, only: [:show, :update, :destroy]
before_action :authorize_api_key, only: [:create]
# GET /jobs
def index
status = (params[:status]) ? params[:status] : 'pending'
@jobs = Job.where(publisher_id: params[:publisher_id], status: status)
render json: @jobs
end
...
end
这样安全吗?
是的,您的代码是安全的。
例如不要使用这样的东西:
Project.where("name = '#{params[:name]}'") # DON'T USE
我有一个控制器,我想知道 Rails 是否已经解析了参数并阻止了 SQL 注入。这是我的控制器的样子:
class V1::JobsController < ApplicationController
include ActionController::HttpAuthentication::Token::ControllerMethods
include ActionController::Serialization
before_action :set_job, only: [:show, :update, :destroy]
before_action :authorize_api_key, only: [:create]
# GET /jobs
def index
status = (params[:status]) ? params[:status] : 'pending'
@jobs = Job.where(publisher_id: params[:publisher_id], status: status)
render json: @jobs
end
...
end
这样安全吗?
是的,您的代码是安全的。
例如不要使用这样的东西:
Project.where("name = '#{params[:name]}'") # DON'T USE