テクニカルコラム「第4回“Ruby on Rails セキュリティ対策”」

CTCテクノロジー株式会社(CTC教育サービス) 2012年06月06日

伊藤忠テクノソリューションズ株式会社(略称:CTC)のグループ会社で、ITシステムの保守サポート、運用サービス及び教育サービスを提供するシーティーシー・テクノロジー株式会社(代表取締役社長:藁谷二郎、本社:東京都千代田区、以下:CTCテクノロジー)は表記コラムのバックナンバーを公開しました。原文は以下の通りです。

今回の 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アプリケーションの一部で、ブログなどで入力されたタイトルを表示する例です。

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

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



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

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

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

コースの詳細情報はこちら:
「Ruby on Rails」関連コース
(リンク »)

関連情報へのリンク »

本プレスリリースは発表元企業よりご投稿いただいた情報を掲載しております。
お問い合わせにつきましては発表元企業までお願いいたします。

CTCテクノロジー株式会社(CTC教育サービス)の関連情報

CTCテクノロジー株式会社(CTC教育サービス)

【企業の皆様へ】企業情報を掲載・登録するには?

御社の企業情報・プレスリリース・イベント情報・製品情報などを登録するには、企業情報センターサービスへのお申し込みをいただく必要がございます。詳しくは以下のページをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]