徳丸さんに迷惑がかからないようにとりあえず 'or'1'='1'-- というローカルパートを決めうちで弾くのをデファクトにしていくとよいのでは(多重防御)
2013-07-09 17:59:41@yousukezan バクってるのでは無くAPIの仕様により残念な事になってる、という事ですね。週末に解説のブログを書く事にしますが、Railsの開発者はDOAに置いているのでこうなっているのだと思います。
2013-07-09 18:34:03バリデーションを「入力値がvalidかどうかを判定し、判定結果を使ってinvalidな時の処理をおこなうことができるもの」とすると、strong parameterはバリデーションではないなあ。 / “Rails4のStrong …” http://t.co/XzhSD4GMKk
2013-07-09 18:43:03「ControllerでvalidationなぞMVCのなんたるかをわかっちょらんッ!!」というマサカリで延焼しそう | Rails4のStrong Parametersはコントローラに置かれたバリデータなのか? - Togetter http://t.co/xU7SvWBtqb
2013-07-09 18:48:27たいーほされるかもしれませんよ(>_<) RT @crosslaboratory: @crosslaboratory: @ockeghem 人様のサービスに支障を及ぼした場合、やはり責任を問われるのでしょうか?(^^;;
2013-07-09 19:14:24いや、元のスライドのvalidationの説明が間違ってる時点でお前は何を言っているんだ https://t.co/vvLUIic9kK
2013-07-09 19:45:08と思ったら、なんとかがきさんの脳内辞典にあるバリデーション/妥当性って単語が、そもそも人口に膾炙してるほうのバリデーション/妥当性って単語とまるで違っている説 http://t.co/K2DHEMzLrr 標準語と関西弁の「なおす」ぐらい違うのか…。
2013-07-09 19:52:57ActiveRecord/Model の validates* を信じてはいけない理由が解せない。理屈としては【そんな奥の方で妥当性検証をするのは正しくない、もっと手前段で検証するべきだ】ということなのだろうけど、十分に手前段だと思うけどなぁ。
2013-07-09 19:55:02Struts 1.x の FormBean のころは変更対象のデータが同一でも Form 毎に検証ロジックを用意する必要があったし、Form でない入力(CSVとかXMLとか)も当然、別の検証ロジックを用意する必要があった。継承や委譲でなんとか整理したけど限界はあった
2013-07-09 19:58:03その点 ActiveRecord/Model は単一の妥当性検証で済む。これのメリットはテストがしやすいこと、ロジックの確認をとりやすいところ、rails console からの手操作でも validation がかかること、などなど、いろいろあって、かなりイケてると思う
2013-07-09 20:00:04Mass Assignment 脆弱性が簡単なミスで起きやすいのが難点だったけど、それも Strong Parameters で解決したし、やっぱ ActiveRecord/Model 最強ですよ、と思う
2013-07-09 20:00:23ActiveRecord/Model で値の妥当性検証をするのは遅すぎる、もっと手前段で検証するべきだ、というなら、別のフレームワーク(たとえば Struts 1.x の FormBean)と比べてどれだけのリスクが増え、どれだけのリスクが軽減されているかを考えるべきだと思う
2013-07-09 20:01:34validation って、あくまで作っているアプリケーションの要件・仕様を満たす(妥当性)か否かで、ミドルウェア/フレームワークの脆弱な部分をパテ埋めする(セキュリティ対策を施す)か否か、とは直交する概念(≒××、○×、×○、○○、いずれもあり)と考えます。
2013-07-09 20:01:48個人的な主観では Struts 1.x の FormBean に比べて Rails のほうがはるかに書きやすく、バグも少なく、テストもしやすく、複雑性が低い。リスクが減ったとしても増えたとはとても思えない。
2013-07-09 20:03:30仮に ActiveRecord, ActiveModel の validate* を信用せず、 Controller で値の妥当性検証を実装したとしても、通るコードの量的は大きな違いなんて無いはずなんですが (数えられるくらいの代入文とメソッド呼び出しが増えるだけで)
2013-07-09 20:05:24ブレないなあ… / “Rails4のStrong Parametersはコントローラに置かれたバリデータなのか? - Togetter” http://t.co/ySRLpyeGjp
2013-07-09 20:05:46@nappa 憶測ですが、コントロール=入力、モデル=処理という見立てで、処理に移る前の入力で検証しなければならない、という話ではないかと
2013-07-09 20:08:39Rails 3 までは、mass assignment 対策は、Model に attr_accessible (更新してよいカラム名ホワイトリスト)または attr_protected (更新したくないカラム名ブラックリスト)を指定していました。あくまで妥当性検査とは別です。
2013-07-09 20:10:02Rails の Controller は MVC の Controller と完全に一致するものではないですし、Rails の Model と MVC の Model も完全に一致するものじゃないですし。そもそも MVC にキチキチに沿ったフレームワークでろくなのがない気が……
2013-07-09 20:13:04Rails 4.x の開発なら ActiveRecord, ActiveModel の validate* で値の妥当性検査をして、Controller で Strong Parameters を使い、必要に応じて WAF を入れればいいんじゃないでしょうか
2013-07-09 20:14:19WAF は Ruby のインタプリタそのものの脆弱性や、Rails の脆弱性(HTTP Requestを受け取ってからユーザが書いたコードへ渡る直前段までの箇所の脆弱性)や、未発見の脆弱性に備えたい人なら入れたほうがいいですね
2013-07-09 20:15:33ところが昨年 http://t.co/yf2im4VLLd が起きたことで、「attr_accessible or attr_protected を殆どの人使ってなくね?」「そもそも入力場面毎に更新したいカラムが違うし Model で指定するのがおかしくね?」と見直しの機運が。
2013-07-09 20:16:36