オルタナティブ・ブログ > 吉政忠志のベンチャービジネス千里眼 >

IT業界でベンチャービジネスの支援をしている執筆者が日々の活動ログと感じたことを、徒然なるままに書き綴っていきます。

Inst. Tech View~第4回“Ruby on Rails セキュリティ対策”~(CTC様メルマガより)

»

皆様、こんにちは。吉政創成の吉政でございます。弊社のお客様であるCTC教育サービス様のメルマガで標記のコラムを掲載しました。

今号のメルマガのコンテンツは以下の通りです。
■ニュース   CISCO認定 CCNP関連コースにバウチャー付きコース新設
         Ruby技術者認定試験合格者の声
             &まつもとゆきひろ氏からのメッセージ掲載
■トピック   Inst. Tech View~ Ruby on Rails セキュリティ対策 ~
■コラム    スーパーエンジニアの独り言 “Java SE 7 登場”
メルマガの全文をご覧になりたい方は以下をクリックください。
ctc201107.pdfをダウンロード

標記のコラムについては以下をご覧ください。

◆◆ Inst. Tech View~第4回“Ruby on Rails セキュリティ対策”~

今回の Inst. Tech View は、生産性の高いWebアプリケーションフレームワークであるRuby on Railsのセキュリティ機能についての話題です。

Ruby on Railsはプログラミング言語Rubyで開発されたWebアプリケーションフレームワークです。Webアプリケーションフレームワークとは、Webアプリケーションを開発する際に頻繁に必要とされる機能を提供するソフトウェアです。Ruby on Railsを使用することで本来実現したい機能に集中し、アプリケーションをスピーディに開発することができます。

Ruby on Railsは様々な機能を備えたフレームワークですが、その中でもセキュリティ対策における機能をご紹介します。

Webアプリケーションにおける代表的な脆弱性としては以下のようなものが挙げられます。
◇ SQLインジェクション
◆ クロスサイトスクリプティング(XSS)
◇ クロスサイトリクエストフォージェリ(CSRF)
◆ OSコマンド/スクリプトインジェクション
◇ セッション固定攻撃
◆ パラメータマニピュレーション

今回は、上記の脆弱性の中でもXSS、CSRFの対策方法に注目します。

XSSはWebページの入力フォームから入力した内容を適切にエスケープしないままHTML中に出力することで、入力中に存在するタグ等の文字がそのままHTMLとして解釈されることを悪用した攻撃です。これによりJavascript等のスクリプトが実行されてセッションハイジャックなどの悪意のある行為が行われてしまう可能性があります。

Ruby on Railsのバージョンによって対応方法は異なりますが、バージョン3からは自動で特殊文字がエスケープされますので、入力内容の表示部分では以下のように記述することができます。

以下はRuby on Railsで作成したWebアプリケーションの一部で、ブログなどで入力されたタイトルを表示する例です。

# タイトルに「<script>alert("crack");</script>」が  入力されていたとします。

| <h1><%= @title %></h1>
#=> <h1>&lt;script&gt;alert(&quot;crack&quot;);&lt;/script&gt;</h1>

テンプレートエンジンによって記号がエスケープされている事がわかります。

また、XSSの攻撃対象に成りかねないのであまり推奨されておりませんが、敢えてエスケープ処理を行わせない場合rawメソッドを使用します。

  | <h1><%= raw @title %></h1>
  #=> <h1><script>alert("crack");</script></h1>

次に、CSRFの対策方法です。
CSRFは別のサイトに用意したコンテンツ上にある罠のリンクを踏ませること等をきっかけとして不正なコードを実行させる攻撃です。
例えば正規アカウントのセッションを利用し、ショッピングの決済やアカウント退会などの重要な処理が行われてしまう可能性があります。

これに対してRuby on RailsではデフォルトでCSRFの対策が行われております。
不正なアクセスであれば自動で例外処理を行う、protect_from_forgeryというメソッドがすべてのコントローラに適用されるコントローラクラスに記述されています。
これにより、form_for等のメソッドで生成するフォームに自動でトークンが埋め込まれ、入力された値と合わせてトークンがサーバに送られます。このトークンを用いて自動照合が行われ、正規の入力フォームからの入力かを判断します。
これにより強制的に送りつけられたパラメータを除外することができ、対策に繋がります。

Ruby on Railsは様々なWebアプリケーションの脆弱性に対してデフォルトで対応しているなど、初心者でも入りやすいフレームワークです。弊社トレーニングを参考にRuby on Railsを始めてみてはいかがでしょうか。

コースの詳細情報はこちら:
「Ruby on Rails」関連コース
http://www.school.ctc-g.co.jp/ruby/

Comment(0)