SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
渋谷テクニカルナイト講師陣が語る新技術動向(AD)

Web 2.0時代のWebアプリケーションセキュリティー

渋谷テクニカルナイト講師陣が語る新技術動向 第8回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 Ajaxやマッシュアップに代表されるWeb 2.0技術は、現在のWebアプリケーション開発のトレンドの一つとなっており、SaaSやクラウド・コンピューティングの普及と相まって、企業アプリにおいても今後普及していくと考えられます。その際、問題となるのがセキュリティです。本稿では、Web 2.0技術を用いたWebアプリケーションにまつわるセキュリティの問題をいくつか取り上げ、紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 Ajax(Asynchronous JavaScript + XML)やマッシュアップ(Mashup)に代表されるWeb 2.0技術は、そのリッチで使いやすいユーザーインターフェイスや高速なレスポンス性から、現在のWebアプリケーション開発のトレンドの一つとなっています。現在注目を集めているクラウド・コンピューティングにおいても、雲(=インターネット)から提供されるサービスを使用したり連携するために、AjaxやJavaScriptはよく用いられます。しかし、セキュリティーの観点から見ると、これらWebアプリケーションやその主要な実行環境環境であるWebブラウザーには、さまざまなセキュリティー上の脅威が存在します。図1は、IBMのセキュリティ部門の一つであるISSが公開しているセキュリティ脅威のトレンドとリスクに関するレポート2008年版によるもので、ISSが検知したWebアプリケーションに関する脆弱性の件数がここ数年で非常に増加していることを示しています。

図1: Webアプリケーションの脆弱性の累積出現数(IBM X-Force Trend and Risk Reportより引用)
図1: Webアプリケーションの脆弱性の累積出現数(IBM X-Force Trend and Risk Reportより引用)

 また、同レポートでは、発見されたWebアプリケーションの脆弱性の数が、他のプラットフォームの脆弱性の数を上回ったことも報告されています。このことは、Webアプリケーションが、ITシステムの中核を担うようになってきたと共に、セキュリティー上の脅威とそれに起因するリスクが高まっていることを意味しています。

 Webアプリケーションが、企業レベルの使用に耐えるためには、信頼性やセキュリティーと言った基盤技術が必要です。この記事では、Webアプリケーションを開発あるいは使用する際のセキュリティー上の問題点や対策、筆者が取り組んでいる研究開発プロジェクトなどについて紹介します。

 Web 2.0に特有のセキュリティーがあるのか? と聞かれることがよくあります。Webアプリケーションのセキュリティーを高めるための情報やツールを提供しているOWASPプロジェクト(Open Web Application Security Projectでは、2004年と2007年にWebアプリケーションにおける10個のセキュリティー上の脅威をあげています。2007年のリストは次のようになっています。

  1. クロスサイトスクリプティング(Cross Site Scripting, XSS)
  2. インジェクション攻撃
  3. 悪意を持ったファイルの実行
  4. 安全でないオブジェクトの直接参照
  5. クロスサイトリクエストフォージェリー
  6. 情報漏洩と不適切なエラー処理
  7. 認証とセッション管理の不備
  8. 安全でない暗号データ保存
  9. 安全でない通信
  10. URLによるアクセス制限の不備

 後で紹介するクロスサイトスクリプティングや、スクリプトやSQLコードを注入し実行させるインジェクション攻撃、意図しないWebページの書き込みや商品購入を引き起こすクロスサイトリクエストフォージェリー(Cross Site Request Forgery, CSRF)など、Web 2.0アプリケーションに多く見られる脅威が上位に来ていますが、クロスサイトスクリプティング、インジェクション攻撃は、2004年のTop 10リストにも入っています。つまり、攻撃手法そのものは、Web 2.0技術が普及する前後で大きく変化している訳ではなく、Webを取り巻く環境やアプリ開発のあり方が変化したことにより、より深刻さを増してきたと言えるでしょう。

 Web 2.0の特徴の一つは、コンテンツが、多くの場合匿名のユーザによって生成され、別のユーザー群によってアクセスされることです。コンテンツの量が膨大になると共に、質という面では、企業や信頼される情報源からのコンテンツとは異なり、必ずしも正確な情報ばかりとは限りなくなってきています。信頼できるWebサイトを騙るフィッシング攻撃も問題になってきていますし、WikiやSNSなどでの誹謗中傷が社会的な問題になっているのはご存じの通りです。また、コンテンツに悪意を持ったJavaScriptコードやマルウエア(malware)が含まれる危険性も増加しています。このようにWeb上のコンテンツがコモディテイー化し、信頼性や価値が相対的に低下していることが、前述のさまざまな脆弱性を引き起こす原因の一つとなっています。

 また、これらのコンテンツを扱うWebアプリケーション構築のあり方も変わりつつあります。例えば、Webブラウザは、静的なHTML文書の閲覧環境から、動的なコンテンツやWebアプリケーションの実行プラットフォームへと役割を変えつつあります。DojoなどのJavaScriptベースのライブラリーが充実し、ロジックがクライアント(=Webブラウザ)側でも動くようになったことで、従来サーバー側を主に守っていればよかったセキュリティーが、クライアント側でのプログラム実行にも注意を払う必要が出てきています。Webブラウザのセキュリティーモデルは、従来からの静的なHTML文書の閲覧環境を想定したものであり、Webアプリケーションのセキュアな実行環境としては不十分です。Webブラウザの実装が多数存在し、さらにバージョンの違いによって変わる振る舞いが、セキュリティ的にも問題になります。Flashなどブラウザ上で動くプラグインのバリエーションを考えると、開発者は膨大な組み合わせのクライアント環境を仮定しないといけません。

 さらに、Web 2.0技術を用いることで、Webブラウザ上に複数の機能やAPIをコンポーネント化してマッシュアップすることが可能になりました。SaaSやクラウド・コンピューティングの普及と相まって、企業アプリにおいても、社内のコンポーネントとWeb上のコンポーネントをマッシュアップするケースが今後増えていくと考えられます。これらのコンポーネントは、セキュリティー的には、異なるドメインに属するものであり、信頼できるものとそうでないものをどのように組み合わせるかは非常に重要な問題です。信頼できないコンポーネントが悪意を持ったスクリプトを含んでいると、信頼できるコンポーネントをコントロールし、重要な情報を盗み出される可能性があります。

 以降、Webアプリケーションのセキュリティーについて、いくつかのトピックを紹介します。

次のページ
XSSとコンテンツのフィルタリング

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
渋谷テクニカルナイト講師陣が語る新技術動向連載記事一覧

もっと読む

この記事の著者

浦本 直彦(ウラモト ナオヒコ)

 日本IBM東京基礎研究所にて、現在、Web基盤におけるセキュリティやパフォーマンス向上などのプロジェクトを担当しています。「イノベーションを探しに行こう」というブログも執筆中です。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3812 2009/04/20 15:42
" ); }

おすすめ

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  1. 6
    「VRAM」 ~マンガでプログラミング用語解説
  2. 7
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  3. 8
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  4. 9
    エンジニアの成長をブーストさせる! 2025年に向けて注目したいコミュニティ──技術・マネジメント・プロダクト開発まで
  5. 10
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  6. 6
    「VRAM」 ~マンガでプログラミング用語解説
  7. 7
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  8. 8
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  9. 9
    エンジニアの成長をブーストさせる! 2025年に向けて注目したいコミュニティ──技術・マネジメント・プロダクト開発まで
  10. 10
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  3. 3
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    「CUDA」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  7. 7
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  8. 8
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  9. 9
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  10. 10
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  1. 6
    「VRAM」 ~マンガでプログラミング用語解説
  2. 7
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  3. 8
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  4. 9
    エンジニアの成長をブーストさせる! 2025年に向けて注目したいコミュニティ──技術・マネジメント・プロダクト開発まで
  5. 10
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表

アクセスランキング

  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  6. 6
    「VRAM」 ~マンガでプログラミング用語解説
  7. 7
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  8. 8
    Amazon Bedrockのナレッジベース、応答の遅延を短縮するRetrieveAndGenerateStream APIをサポート NEW
  9. 9
    エンジニアの成長をブーストさせる! 2025年に向けて注目したいコミュニティ──技術・マネジメント・プロダクト開発まで
  10. 10
    ガートナー、日本企業が2025年に向けて押さえておくべきインフラストラクチャとオペレーションのトップトレンドを発表
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  3. 3
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    「CUDA」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  7. 7
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  8. 8
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  9. 9
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  10. 10
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善