Rails4のStrong Parametersはコントローラに置かれたバリデータなのか?

まとめました
11
徳丸 浩 @ockeghem

大垣さんのプレゼン資料に、バリデーションはコントローラで実施すべきで、そうしていないと欠陥としているのだけど、バリデーションをコントローラに書くかモデルに書くかはフレームワークの考え方によるもので、欠陥は言い過ぎではないかと思いましたが、どうでしょうか?

2013-07-08 17:24:07
徳丸 浩 @ockeghem

さきほどのプレゼン資料はこちら…「ActiveRecordを利用しない場合はバリデーションを行えない」ことを指して「欠陥」と言っているようにも読めますが… Rails4 Security http://t.co/zimFxK2GwE

2013-07-08 17:31:31
山崎良祐 / Ryosuke Yamazaki @nappa

「Rails4 のバリデーションは Controller」「Rails3 のバリデーションは Model」??? > RT

2013-07-08 17:44:55
山崎良祐 / Ryosuke Yamazaki @nappa

Rails4 も 3 も validation のロジックを書くところは Model で変わっておりませんが……

2013-07-08 17:47:14
山崎良祐 / Ryosuke Yamazaki @nappa

更新を許可するカラムの設定を Controller 側で指定できるようにしたというものであって、別にバリデーションの箇所の移動ではないんですが……

2013-07-08 17:52:33
山崎良祐 / Ryosuke Yamazaki @nappa

p20〜p30、strong parameters の仕様の説明がまるでデタラメなのですが。どうツッコめばいいやら > Rails4 Security on @slideshare http://t.co/Zf6BVX9qqg

2013-07-08 17:57:23
kenjis @kenji_s

「Rails4のバリデーションは Controller」ですか。興味深い http://t.co/ljsB2W5NjR

2013-07-08 18:33:03
shishi @shishi4tw

@ockeghem バリデーションの昨日はActiveModelのものですし、ActiveRecordなしでバリデーションできます。また、バリデーションするのがコントローラかモデルかは考え方によると思います。

2013-07-08 19:07:47
Toru KAWAMURA @tkawa

strong parametersはvalidationではないと思うんだけど(ドキュメントでも一切"validate/validation"という単語は出てこない)業界によって定義が違うのだろうか / “Rails4 Secur…” http://t.co/LcvfSBuXpu

2013-07-09 00:57:29
willnet @netwillnet

このstrong_parametersまわりの説明は誤解を招きそう… / “Rails4 Security” http://t.co/nKhmInE9Ok

2013-07-09 11:21:36
yuichi @uzuki05

Railsで言うところの「バリデーション」とは別じゃないですかね・・・ RT @netwillnet このstrong_parametersまわりの説明は誤解を招きそう… / “Rails4 Security” http://t.co/ibeMbctkEN

2013-07-09 11:26:36
willnet @netwillnet

strong_parameters があれば入力値チェックは完璧!って読めてしまえそうなのがまずそう。strong_parameters がやってるのは入力値の一部をフィルタリングすることだけなので、入力値内容のチェックは model で定義しないといけませんよ

2013-07-09 11:32:42
d6rkaiz @d6rkaiz

先のスライドの作者大垣さんのコメントが公開設定になったようだ。 https://t.co/JskzCuQvCs

2013-07-09 12:03:34
山崎良祐 / Ryosuke Yamazaki @nappa

書いた / “Strong Parameters の説明がバグっておられる件 - nappa_zzz's diary” http://t.co/EjClxhKbpj

2013-07-09 12:13:39
山崎良祐 / Ryosuke Yamazaki @nappa

Strong Parameters の役割について説明を書いてみました。バリデーションが Model か Controller かという話は誰かが補完してくれることを期待 > http://napp.. http://t.co/W4q1XMy8Ha

2013-07-09 12:22:27
山崎良祐 / Ryosuke Yamazaki @nappa

「バリデーションはController」を真に受けて、Rails の流儀に沿ってない(Modelのvalidatorを使わない)実装をする人が出てこないか不安……

2013-07-09 12:25:00
徳丸 浩 @ockeghem

明快な解説をありがとうございます>『大垣さんのRails4 Securityの発表資料のうち、Strong Parameters の説明は誤っております…』 Strong Parameters の説明がバグっておられる件 http://t.co/QCZT008s3R

2013-07-09 13:41:13
yousukezan @yousukezan

岡山Ruby会議02のプレゼンテーション資料「Rials4 Security」 http://t.co/LfcaS8IRWO @yohgakiさんから が間違ってるってことなのかな http://t.co/TXG2PAxy7X

2013-07-09 14:21:55
Youhei Kondou @dw3w4at

@ockeghem なんとかがきさんは、今回の件に限らずなのですが、「バリデーション要不要」と「セキュリティ対策要不要」を同一地平でとらえている事が多いような気がします。これら二つの要不要は直交する概念なのに。

2013-07-09 14:32:03
Youhei Kondou @dw3w4at

@ockeghem あと蛇足ですが、ActiveRecord/ActiveModel は、Web の入力以外からも使用される(例:バッチ処理)部品なので、Controller に Strong Parameters が有る無しに関わらず、引き続きバリデーションはここにあるのです。

2013-07-09 14:36:22
Youhei Kondou @dw3w4at

@yousukezan (1) Rails のバリデーションの説明としては大間違い (2) 昨年の Mass assignment vulnerability もあって、 Mass assignment 制御まわりを Model から Controller に移した てトコです。

2013-07-09 14:45:59
山崎良祐 / Ryosuke Yamazaki @nappa

べつに strong parameters がバリデーションかどうかはどうでもよくなってきたんですが、誤解がどんどん広まっていくのだけはちょっと……

2013-07-09 14:50:45
山崎良祐 / Ryosuke Yamazaki @nappa

そうそう、本人にその意図はなくとも、そう読めてしまうのがまずい。

2013-07-09 14:53:23