検索
連載

適切なエスケープ処理でクロスサイトスクリプティングに備えるStrutsで作るセキュアWebアプリケーション(1)(1/3 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 Webアプリケーションのセキュリティホールが注目を浴びたことから、セキュリティを意識した開発の必要性が高まってきている。今後の流れとして、セキュリティ上満たすべき項目が要件定義の段階から組み込まれるケースが増えていくことが予想されるが、実際の開発現場においてはセキュリティホールをふさぐための実装方法が分からないという声も多いのではないだろうか。

 そういった開発者の負担を少しでも軽くすることができるように、本連載ではJavaにおけるWebアプリケーション開発時に最もよく利用されているStrutsフレームワークの実装に踏み込んで、セキュリティ上注意すべきポイントを解説していきたい。なお、本連載ではStruts 1.2.8を対象として解説を行っていくが、すでにStrutsを利用したWebアプリケーション開発を行っている開発者をターゲットとしているため、Strutsの使用方法、各機能の詳細な説明などは割愛する。

【参考連載記事】
Webシステムのセキュリティ要件(情報マネジメント)
Strutsを使うWebアプリケーション構築術(Java Solutionフォーラム)


 今回は、クロスサイトスクリプティング(Cross Site Scripting:XSS)の脆弱性に関する基本的な実装上の注意点を解説していこう。詳細については「クロスサイトスクリプティング対策の基本」における説明を参照していただくとして、簡潔に述べるとクロスサイトスクリプティングとはユーザーの入力値を基に動的なHTTPレスポンスを生成するアプリケーションにおいて、入力値として渡されたスクリプトコードがWebブラウザ上で動作することに起因する脆弱性のことである。

 この脆弱性から発生する被害は、

  • スクリプトがサイトをまたがることでCookieが盗まれてしまう
  • VBScriptによりローカルのファイルを操作されてしまう
  • HTMLタグが入力値に渡されることでページが改ざんされてしまう

などさまざまである。対策の基本となるのは、HTMLエンコード、URLエンコードと呼ばれるエスケープ処理を適切に行うことである。

bean:writeタグを使ってエスケープ処理を適切に行う

 クロスサイトスクリプティングの問題は、HTML特殊文字をエスケープさせて対策することが基本である。エスケープが必要なHTML上の特殊文字とは、

「<」「>」「&」「"」「'」

などである。動的なパラメータをHTMLに出力する場合には、これらを特殊な意味を持たない文字列に変換するHTMLエンコード処理が必須となる。

 Strutsを使用して動的なパラメータを扱う場合には、ViewコンポーネントであるStrutsカスタムタグライブラリを使用することが多いだろう。Strutsカスタムタグライブラリを使用する際にHTMLエンコード処理を適切に行うには、どのような注意が必要となるだろうか。代表的なカスタムタグであるbean:writeタグを使用した際の動作を見ながら確認していこう。

 まず、入力されたコメントを表示するだけの単純なWebアプリケーションを作成してみる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 作成したWebアプリケーションに対し、スクリプトとして動作する値を入力して送信ボタンを押したところ、以下のような画面が表示された。

画面1 スクリプトとして動作する値を入力
画面1 スクリプトとして動作する値を入力

 スクリプトは動作せず、「<script>alert('XSS')</script>」という値がそのまま出力されている。beanWrite.jsp上でHTMLエンコードに関する特別な記載はしていないが、画面1のHTMLソースは以下のようになっており、内部的に何らかの処理が行われていることは間違いないだろう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ

Security & Trust 記事ランキング

  1. 米国/英国政府が勧告する25の脆弱性、活発に悪用されている9件のCVEとは、その対処法は? GreyNoise Intelligence調査
  2. セキュリティ担当者の54%が「脅威検知ツールのせいで仕事が増える」と回答、懸念の正体とは? Vectra AI調査
  3. セキュリティ専門家も「何かがおかしいけれど、攻撃とは言い切れない」と判断に迷う現象が急増 EGセキュアソリューションズ
  4. OpenAIの生成AIを悪用していた脅威アクターとは? OpenAIが脅威レポートの最新版を公開
  5. 約9割の経営層が「ランサムウェアは危ない」と認識、だが約4割は「問題解決は自分の役割ではない」と考えている Vade調査
  6. インサイダーが原因の情報漏えいを経験した国内企業が約3割の今、対策における「責任の所在」の誤解とは
  7. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  8. MicrosoftがAD認証情報を盗むサイバー攻撃「Kerberoasting」を警告 検知/防御方法は?
  9. 人命を盾にする医療機関へのランサムウェア攻撃、身代金の平均支払額や損失額は? 主な手口と有効な対策とは? Microsoftがレポート
  10. AIチャットを全社活用している竹中工務店は生成AIの「ブレーキにはならない」インシデント対策を何からどう進めたのか
ページトップに戻る