如果我创建一个全新的Rails应用程序(使用Rails 3.0.9),并快速搭建一个脚手架,如下所示:
$rails新测试$rails g脚手架物品名称:string
那么app/controllers/application_controller.rb默认包含一个“protect_from_forgery”,因此它应该在POST创建期间检查authenticity_token。至少,这是我的理解。
那么,为什么这行在没有提供令牌的情况下成功地创建了一个新的Thing呢。
$curl-F“事物[name]=abc123”http://localhost:3000/things
日志条目显示:
于2011-07-05 08:29:18+0100开始发布127.0.0.1的“/things”由ThingsController#create作为处理参数:{“thing”=>{“name”=>“abc123”}}AREL(0.3ms)插入“事物”(“name”,“created_at”,“updated_at“)值('abc123','2011-07-05 07:29:18.484457','2011年07月05日07:29:18.484457')已重定向至http://localhost:3000/things/18在89ms内找到完成的302
我还可以删除记录:
$curl-X删除http://localhost:3000/things/18
在生产模式中也会发生同样的情况。这不是让我的申请对CSRF开放吗?