アカウント名:
パスワード:
この問題はActiveRecordのモデルに適切にサニタイズされていないHTTPパラメータを渡すことで発生するもので、要するにXSSやSQL Injectionと同じです。
Railsの脆弱性ではありませんし、本質的にRails固有のものは何もありません。いつもの通り、「ユーザから渡されたパラメータを信用しない」という基本的なルールを墨守することが大切で、GitHubがそれをやっていなかったというだけのことです。
ここぞとばかりにRuby叩きが発生していますが、register_globalsとは全然レベルが違います。Railsのインターフェイスデザインにまずいところはなにもありません。逆に言えば、完全な解決策もありません。attr_accessibleは助けになりますが、これは、例えるならば、「XSS対策のために、デフォルトでHTMLへの埋め込み文字列をエスケープする」というのに近く、ユーザパラメータのサニタイズが不要になるものではありません。
繰り返しになりますが、ActiveRecordのモデルに対するメソッド呼び出しは最終的にデータベースクエリになるということを頭において、「ユーザから渡されたパラメータを引数にするときはサニタイズする」ことを忘れないことです。これは他のWebフレームワークでもまったく同じです。
サニタイズいうなキャンペーンどこいった
ところで。多くの人が間違いを犯すシステムは脆弱なシステムです。基本ルールを守るというのは重要ですが、守りやすい、わかりやすいシステムであるというのも重要です。驚きは最小限に。でしたっけ?
驚き最小の法則ってのは、昔の Ruby の開発ポリシーでしたね。
Rails とは全然関係ないし、確か今の Ruby でもその方針はとくに重要視していない。
間違えてる人が時々いるけど、「驚き最小の法則」がRubyの開発ポリシーだったことはないよ。RubyのMLで言い出した人間がいるというだけ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー
ちゃんと記事を読みましょう。これはRailsの脆弱性ではありません。 (スコア:0)
この問題はActiveRecordのモデルに適切にサニタイズされていないHTTPパラメータを渡すことで発生するもので、
要するにXSSやSQL Injectionと同じです。
Railsの脆弱性ではありませんし、本質的にRails固有のものは何もありません。
いつもの通り、「ユーザから渡されたパラメータを信用しない」という基本的なルールを墨守することが大切で、
GitHubがそれをやっていなかったというだけのことです。
ここぞとばかりにRuby叩きが発生していますが、register_globalsとは全然レベルが違います。
Railsのインターフェイスデザインにまずいところはなにもありません。
逆に言えば、完全な解決策もありません。attr_accessibleは助けになりますが、
これは、例えるならば、「XSS対策のために、デフォルトでHTMLへの埋め込み文字列をエスケープする」というのに近く、
ユーザパラメータのサニタイズが不要になるものではありません。
繰り返しになりますが、ActiveRecordのモデルに対するメソッド呼び出しは最終的にデータベースクエリになるということを頭において、
「ユーザから渡されたパラメータを引数にするときはサニタイズする」ことを忘れないことです。
これは他のWebフレームワークでもまったく同じです。
Re: (スコア:0)
サニタイズいうなキャンペーンどこいった
ところで。
多くの人が間違いを犯すシステムは脆弱なシステムです。
基本ルールを守るというのは重要ですが、守りやすい、わかりやすいシステムであるというのも重要です。
驚きは最小限に。でしたっけ?
Re: (スコア:0)
驚き最小の法則ってのは、昔の Ruby の開発ポリシーでしたね。
Rails とは全然関係ないし、確か今の Ruby でもその方針はとくに重要視していない。
PoLS (スコア:1)
間違えてる人が時々いるけど、「驚き最小の法則」がRubyの開発ポリシーだったことはないよ。
RubyのMLで言い出した人間がいるというだけ。