0
我有下面的鏈接:Rails 3:如何防止用戶通過輸入URL來更改數據庫?
link_to("Toggle", "/jobs/#{job.id}/toggle_is_money_paid", :remote => true)
其切換使用Ajax請求的作業的is_money_paid
字段:
def toggle_is_money_paid
job = Job.find(params[:id])
job.update_attributes(:is_money_paid => !job.is_money_paid)
render :nothing => true
end
# config/routes.rb
match "/jobs/:id/toggle_is_money_paid" => "jobs#toggle_is_money_paid"
然而,如果直接用戶類型:
http://localhost:3001/jobs/200/toggle_is_money_paid
在瀏覽器,它將切換作業#200的is_money_paid
字段。
我怎樣才能防止這種情況,使用戶只能通過按下鏈接來切換字段。
什麼?這不是一個解決方案。它唯一做的是使請求更難做,但仍然有可能。 – ryeguy 2011-03-15 02:33:39
@ryeguy它可以防止CSRF,所以只有用戶自己可以切換字段。 – Samuel 2011-03-15 05:02:20
@ryeguy:人們無法在地址欄中輸入網址並使其正常工作。該方法需要PUT,但URL是GET。 – 2011-03-15 11:01:52