サイバー攻撃

サニタイジングとは?行わない場合のリスクや実施方法を解説

Written by Aimee

サニタイジングとは?行わない場合のリスクや実施方法を解説

失敗しないための脆弱性診断実施のコツ

セキュアな開発・サービス提供に必須!はじめての脆弱性診断に関する、正しい進め方ガイド

資料をダウンロードする


サニタイジング(無効化)とは、Webアプリケーションにおける脆弱性対策の一種であり、外部からの入力データに含まれる文字やコードを、安全な状態へと変換・処理するプロセスを指します。

具体的には、Webアプリケーションやシステムに入力されたデータ(フォームの値、URLパラメータ、書き込みなど)内の文字列を、スクリプトコードとして意味を持たない無害な状態にするため、他の文字列に置き換える・特定の文字を削除するといった処理を行います。

サニタイジングを適切に行うことで、Webアプリケーションの脆弱性を悪用した「クロスサイトスクリプティング(以下XSS)」や「SQLインジェクション」といったサイバー攻撃の被害を防ぐことが可能です。

また、サニタイジングは「エスケープ処理」と同義で使われることもありますが、厳密には、エスケープ処理はサニタイジングの一つの手法に分類されます。サニタイジングが、不正なデータや悪意のあるコードを無害化するための総合的な手法を指すのに対し、エスケープ処理は特定の文字列を、意味を持たない別の文字列に置き換える手法を指します。

サニタイジングの具体的な実施方法は、下記の通りです。

  • ・ JavaScriptで「任意の文字列を置き換える関数」を独自に作成
  • ・ htmlspecialchars関数の利用
  • ・ プリペアドステートメントを活用

この記事では、サニタイジングの概要、行わない場合のリスクや実施方法について詳しく解説いたします。

▼この記事を要約すると

  • サニタイジングとは、入力データを安全に処理するために、不正なデータや悪意のあるコードを無害化すること
  • サニタイジングを行わない場合、XSSやSQLインジェクション、セッションハイジャックなどの攻撃にあうリスクがある
  • サニタイジングだけでは、Webサイトにおける全ての脆弱性には対策できないため、脆弱性診断により改善項目を洗い出し、適切な対策をおこなうことが重要

サニタイジングとは?


サニタイジング(Sanitizing)とは、外部から入力されるデータを安全に処理するために、不正なデータや悪意のあるコードを無害化(サニタイズ)することを指します。

Webアプリケーションでは、フォーム入力やURLパラメータを通じて外部からの入力を受け入れます。その際、不正なデータや悪意のあるコードが適切に処理されないことで、XSSやSQLインジェクションといったサイバー攻撃の標的となり、機密情報の漏洩やシステムの乗っ取りといった被害を招きます。

このような攻撃を防ぐために、サニタイジングによる適切な処理が求められます。サニタイジングによって不正なデータや悪意のあるコードを無害化する方法としては、以下が挙げられます。

  • ・ 特殊な意味を持つ文字・記号を無害な文字・記号に置き換える
  • ・ 特殊な意味を持つ文字・記号の入力を制限する
  • ・ 特殊な文字・記号が入力された場合、処理を強制的に終了する

失敗しないための脆弱性診断実施のコツ

セキュアな開発・サービス提供に必須!はじめての脆弱性診断に関する、正しい進め方ガイド

資料をダウンロードする

サニタイジングによって防げるWebアプリケーションの脆弱性

サニタイジングは、XSSやSQLインジェクションといった、入力値の処理における脆弱性を悪用した攻撃の対策として欠かせません。

両者はWebアプリケーションの脆弱性を狙う、代表的な手口です。
情報処理推進機構(IPA)の活動報告による最新のデータによると、2024年の10月~12月に届出されたWebサイトにおける脆弱性のうち、XSS(CWE-79)が全体の57%と最も多く、次いでSQLインジェクションが11%と、上位を占める結果となっています。

この結果からも、両者がWebサイトにおける脆弱性のうち、特に対策すべき重要な脅威であることがわかります。

出典:IPA|脆弱性対策情報データベース JVN iPedia に関する 活動報告レポート [2024年 第4四半期(10月~12月)](2025年01月22日)
XSSとSQLインジェクションの詳細については、以下の記事で解説しています。

関連ページ

クロスサイトスクリプティング(XSS)とは?事例や対策を紹介

関連ページ

SQLインジェクションとは?対策や例をわかりやすく解説

サニタイジングとエスケープ処理との違い


サニタイジングと「エスケープ処理」は、セキュリティ対策において同義で使われる場合もありますが、厳密にいうと、エスケープ処理はサニタイジングに含まれる手法の一つです。

エスケープ処理とは、入力データに含まれる特殊文字やコードが実行されないよう、意味を持たない別の安全な文字列に変換する方法です。

例えば、HTMLにおいてタグの一部として認識される 「<」や「>」といった文字を、 「&lt;」に置き換えることで無害化するといった処理が、エスケープ処理に該当します。

一方のサニタイジングは、外部から入力されるデータに対し、不正なデータや悪意のあるコードを無害化するための、エスケープ処理を含む「総合的な手法」を指します。

サニタイジングを行わない場合のセキュリティリスク


サニタイジングを適切に行わない場合、以下のようなセキュリティリスクが発生する恐れがあります。

  • ・ セッションハイジャックによる不正アクセス
  • ・ 個人情報の窃取
  • ・ Webサイトの改ざんによる偽情報の表示
  • ・ 強制的なページ遷移

セッションハイジャックによる不正アクセス

セッションハイジャックとは、攻撃者がユーザーのセッションIDを盗み、正規ユーザーになりすましてシステムへ不正アクセスする攻撃手法です。

▼セッションハイジャックの攻撃の流れ
セッションハイジャックの攻撃の流れ
セッションハイジャックは、主にXSSを介して実行されます。

  • ・ 攻撃者がXSSを利用して、ユーザーのセッションIDを窃取
  • ・ 攻撃者がセッションIDを悪用し、正規ユーザーになりすましてログイン
  • ・ ユーザーの個人情報の不正取得や、不正な取引の実行

サニタイジングを適切に実施しなければ、XSS攻撃を防ぐことができず、結果としてセッションハイジャックの被害にもあう可能性があります。

関連ページ

セッションハイジャックの仕組みから対策までわかりやすく解説

個人情報が窃取される

サニタイジングが不適切な場合、XSSやSQLインジェクションなどの攻撃を受ける可能性があります。これにより、データベースに保存されている個人情報が不正に閲覧・窃取されるリスクが生じます。

具体的な被害例

  • ユーザーのログイン情報(ID・パスワード)の漏洩
  • クレジットカード情報や住所などの個人データの流出
  • 不正送金やアカウント乗っ取り

Webサイトの改ざんによる偽情報の表示

サニタイジングを適用しない場合、攻撃者はWebサイトに悪意のあるスクリプトを埋め込み、偽情報を表示させることが可能になります。

主なリスク

  • ユーザーが誤った情報を信用し、不利益を被る
  • 企業や組織の信頼性が損なわれる
  • 攻撃者が管理者権限を奪取し、不正なコンテンツを掲載

例えば、XSSによるWebサイトの改ざんが発生すると、企業やブランドの信用が失われ、法的責任や金銭的損失に繋がる可能性があります。

強制的なページ遷移

サニタイジングを行わないと、攻撃者がWebサイトに悪意のあるコードを仕込み、ユーザーを意図しないページに強制的に遷移(リダイレクト)させることができます。

主な被害例

  • フィッシングサイトへの誘導(偽のログインページで認証情報を窃取)
  • マルウェア感染サイトへの誘導(ユーザーの端末をマルウェアに感染させる)

適切なサニタイジングを行い、ユーザーの入力値を正しく処理することで、こういったリダイレクト攻撃を防ぐことができます。

サニタイジングの実施方法


以下では、代表的なサニタイジングの実施方法を紹介します。

JavaScriptにおけるサニタイジング

JavaScriptには標準のサニタイジング関数が存在しないため、入力値を適切に処理する関数を、独自に実装する必要があります。

「<」や「>」などの特殊文字をエンコードすることで、ブラウザがHTMLタグとして解釈するのを防げます。ユーザー入力が意図せずHTMLやスクリプトとして実行されるリスクを軽減します。

PHPの関数を利用する

PHPでは、htmlspecialchars関数を使用することで、簡単にサニタイジングを実装できます。

htmlspecialchars() は、htmlspecialchars( 変換対象となる文字列, 変換するルール・方法, 文字コード )という記法で実行することが出来ます。

htmlspecialchars() 関数の使用例

$sanitized = htmlspecialchars($input, ENT_QUOTES, ‘UTF-8’);

この関数を適用することで、「<」や「>」といったHTMLタグを、特定のエンティティ(例:&lt; や >)に変換し、XSS攻撃を防止できます。

SQLインジェクション対策:プリペアドステートメントの活用

プリペアドステートメントとは、SQL文をデータベースに送信する前に、その構造を解析し、ユーザーの入力値を後から安全に埋め込む仕組みです。

このアプローチにより、ユーザーが入力したデータがSQL文の一部として解釈されることを防ぎ、悪意のあるコードが実行されるリスクを大幅に軽減します。

プリペアドステートメントの利点

  • SQLインジェクション攻撃を防止(ユーザーの入力がSQL構文として解釈されない)
  • パフォーマンスの向上(同じSQL文を複数回実行する場合、解析コストを削減)
  • コードの可読性・保守性の向上

プリペアドステートメントは、MySQL・PostgreSQL・SQL Server・SQLite などの主要なDBMSで広くサポートされており、SQLインジェクション対策として推奨される手法です。

サニタイジングと併せて行ってほしいLANSCOPE プロフェッショナルサービスの「Webアプリケーション脆弱性診断」


適切なサニタイジングを実施することで、XSSやSQLインジェクションなどの脆弱性を防ぎ、Webアプリケーションのセキュリティを強化できます。

しかし、Webアプリケーションには、サニタイジングの不備以外にもさまざまなセキュリティリスクが潜んでいます。例えば、適切なアクセス制御の欠如、不適切なセッション管理、脆弱な認証・認可の仕組みなど、攻撃者が悪用可能なポイントは多岐にわたります。

これらのリスクを効果的に特定・対策するには、サニタイジングの実施に加え、Webアプリケーションの脆弱性を網羅的に評価する「脆弱性診断」が不可欠です。

LANSCOPE プロフェッショナルサービスの「Webアプリケーション脆弱性診断」では、セキュリティ専門家が精密な診断を実施し、SQLインジェクションやXSSなどの攻撃を引き起こす可能性のある脆弱性を特定します。

診断の特長

  • ・ Webアプリケーションの脆弱性を網羅的に検査
  • ・ SQLインジェクション、XSS、認証・セッション管理の問題点を分析
  • ・ 診断結果を「スコア化」し、リスクの重要度を可視化
  • ・ 具体的な修正方法を提示し、効果的なセキュリティ対策を提案

診断結果は点数化されたレポートとして提供され、脆弱性のリスクレベルを明確に把握できます。また、検出された脆弱性ごとに、最適なセキュリティ対策と修正方法を具体的に提示するため、無駄のない迅速な対策を行っていただけます。

関連ページ

LANSCOPE プロフェッショナルサービス の「Webアプリケーション脆弱性診断」はこちら

また、診断項目を重要なセキュリティリスクに絞ることで、より低コストでWebアプリケーションの脆弱性診断を受けられる「セキュリティ健康診断パッケージ」も提供しています。

関連ページ

低コスト・短期で診断を行う『セキュリティ健康診断パッケージ』の詳細はこちら

まとめ


本記事では、「サニタイジング」の概要とその重要性、適切な対策について解説しました。

本記事のまとめ

  • サニタイジングとは、入力データを安全に処理するために、不正なデータや悪意のあるコードを無害化すること
  • サニタイジングを行わない場合、XSSやSQLインジェクション、セッションハイジャックなどの攻撃にあうリスクがある
  • サニタイジングだけでは、Webサイトにおける全ての脆弱性には対策できないため、脆弱性診断により改善項目を洗い出し、適切な対策をおこなうことが重要

XSS攻撃やSQLインジェクション攻撃などを防ぐためには、ユーザーからの入力を適切に処理して無害化することが求められます。企業はサニタイジングを徹底することで、セキュリティを強化し、安定したシステム運用を実現しましょう。

また、脆弱性診断に関心のある方は、以下の資料もご活用ください。

失敗しないための脆弱性診断実施のコツ

セキュアな開発・サービス提供に必須!はじめての脆弱性診断に関する、正しい進め方ガイド

資料をダウンロードする