私は(Railsのに3.0.9を使用して)新しいRailsアプリケーションを作成し、以下のように足場の迅速なビットをノックした場合:CSRFがRailsで動作していませんか?
$ rails new testing
$ rails g scaffold thing name:string
次にアプリ/コントローラ/ application_controller.rbはデフォルトで「protect_from_forgery」が含まれていしたがって、POST作成時にauthenticity_tokenをチェックする必要があります。少なくとも、それは私の理解です。
なぜ、この行は、トークンを提供せずに、新しいThingを正常に作成しますか?
$ curl -F "thing[name]=abc123" http://localhost:3000/things
ログエントリは言う:私もレコードを削除するには、この操作を行うことができ
Started POST "/things" for 127.0.0.1 at 2011-07-05 08:29:18 +0100
Processing by ThingsController#create as
Parameters: {"thing"=>{"name"=>"abc123"}}
AREL (0.3ms) INSERT INTO "things" ("name", "created_at", "updated_at") VALUES ('abc123', '2011-07-05 07:29:18.484457', '2011-07-05 07:29:18.484457')
Redirected to http://localhost:3000/things/18
Completed 302 Found in 89ms
:
$ curl -X DELETE http://localhost:3000/things/18
同じことが、生産モードで起こります。これは私のアプリケーションをCSRFに開放していないのですか?
セッションIDに基づいてユーザーを認証していますか? – polarblau