検索
連載

適切なエスケープ処理でクロスサイトスクリプティングに備える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. 「SQLite」のゼロデイ脆弱性、GoogleのAIエージェントが見つける AIは脆弱性調査の課題をどう解決したのか?
  2. 増える標的型ランサムウェア被害、現場支援から見えてきた実態と、脆弱性対応が「限界」の理由
  3. 日本人の約半数が「1年前より危険」と考えるオンライン詐欺とは マカフィーがホリデーショッピング詐欺に関して調査
  4. ランサムウェア攻撃を受けた企業、約6割が「サプライチェーンのパートナー経由で影響を受けた」 OpenText調査
  5. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  6. 長続きする高度セキュリティ人材育成の秘訣を「第19回情報危機管理コンテスト」から探る
  7. Google Cloudがサイバーフィジカルシステムのレジリエンスを高める10の指標を解説 最初にすべきことは?
  8. セキュリティ担当者の54%が「脅威検知ツールのせいで仕事が増える」と回答、懸念の正体とは? Vectra AI調査
  9. 「ランサムウェアに一度感染したら、身代金を払ってもまた攻撃される」のはほぼ確実? ウィズセキュア調査
  10. AIチャットを全社活用している竹中工務店は生成AIの「ブレーキにはならない」インシデント対策を何からどう進めたのか
ページトップに戻る