SHOEISHA iD

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

連載記事

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

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

'); 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回

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

はじめに

 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とコンテンツのフィルタリング

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

渋谷テクニカルナイト講師陣が語る新技術動向連載記事一覧

もっと読む

この記事の著者

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

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3812 2009/04/20 15:42
" ); }

おすすめ

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  1. 6
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  2. 7
    VSCodeでPHP開発環境を構築しよう
  3. 8
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  4. 9
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  5. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  6. 6
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  7. 7
    VSCodeでPHP開発環境を構築しよう
  8. 8
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  9. 9
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  10. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW
  1. 1
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  2. 2
    【速報】ITエンジニア本大賞 2026、技術書部門とビジネス書部門の大賞が決定!
  3. 3
    「LTSとSTS」 ~マンガでプログラミング用語解説
  4. 4
    GitHub、Markdownで目標を記述することでタスクを自動実行する「Agentic Workflows」公開
  5. 5
    「否定された」と感じさせないコードレビューの作法。チームを育てるテキストコミュニケーションとは?
  6. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  7. 7
    「REPL」 ~マンガでプログラミング用語解説
  8. 8
    C++の新機能を理解する──静的なoperator()/operator[]と多次元対応operator[]など言語仕様の強化
  9. 9
    最新バージョン.NET 10/Visual Studio 2026の登場が、開発者にいかなる価値をもたらすか──「ECHO 2025」開催
  10. 10
    Apple、2026年4月からiOSアプリの新SDK対応を必須化

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  1. 6
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  2. 7
    VSCodeでPHP開発環境を構築しよう
  3. 8
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  4. 9
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  5. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  6. 6
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  7. 7
    VSCodeでPHP開発環境を構築しよう
  8. 8
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  9. 9
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  10. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW
  1. 1
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  2. 2
    【速報】ITエンジニア本大賞 2026、技術書部門とビジネス書部門の大賞が決定!
  3. 3
    「LTSとSTS」 ~マンガでプログラミング用語解説
  4. 4
    GitHub、Markdownで目標を記述することでタスクを自動実行する「Agentic Workflows」公開
  5. 5
    「否定された」と感じさせないコードレビューの作法。チームを育てるテキストコミュニケーションとは?
  6. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  7. 7
    「REPL」 ~マンガでプログラミング用語解説
  8. 8
    C++の新機能を理解する──静的なoperator()/operator[]と多次元対応operator[]など言語仕様の強化
  9. 9
    最新バージョン.NET 10/Visual Studio 2026の登場が、開発者にいかなる価値をもたらすか──「ECHO 2025」開催
  10. 10
    Apple、2026年4月からiOSアプリの新SDK対応を必須化