技術用語解説

サニタイズ・サニタイジングとは?必要な理由や行わないリスク、実施方法を解説

サニタイズとは、ユーザーが入力したデータに含まれる特別な意味を持つ可能性がある文字や文字列を、一定の規則に基づき別の表記に置き換えることです。サニタイズ処理の実施を「サニタイジング(無効化)」と呼びます。本記事では、サニタイズの概要や必要な理由と行わないリスク、開発言語別サニタイズの実施方法について解説します。

目次

  1. 1サニタイズ・サニタイジングとは
  2. 2サニタイズが必要な5つの理由
  3. 3サニタイズを行わない場合のリスク
  4. 4開発言語別サニタイズの実施方法
  5. 5サニタイズの今後
  6. 6まとめ

サイバー攻撃への対策手法である「サニタイズ」「サニタイジング」をご存じでしょうか。サニタイズ、サニタイジングとは、ユーザーが入力したデータの特殊な意味を持つ文字・文字列を無効化する手法や、その処理のことです。

本記事では、サニタイズの概要や必要な理由と行わないリスク、開発言語別サニタイズの実施方法について詳しく解説します。サニタイズやサニタイジングについて知りたい方、セキュリティ対策をしたい方は、ぜひ参考にしてください。

サニタイズ・サニタイジングとは

サニタイズとは、ユーザーが入力したデータに含まれる特別な意味を持つ可能性がある文字や文字列を、一定の規則に基づき別の表記に置き換えることです。サニタイズ処理の実施を「サニタイジング(無効化)」と呼びます。区切り記号などの検出・置き換えを行うことで、WebアプリケーションやWebサイトのセキュリティ対策が可能です。ここからは、サニタイズの重要性と歴史について詳しく解説します。

サニタイズの重要性

サイバー攻撃が高度化・巧妙化している現代において、サニタイズの重要性が増しています。サイバー攻撃者は、多様な方法を活用して情報の窃盗を狙っており、とくにシステムやアプリケーションの脆弱性を狙う手法が増加しています。脆弱性とはシステムの弱点や欠陥のことです。
⇒脆弱性とは?発生原因から被害事例、対処法までわかりやすく解説

例えば、ユーザーがWebフォームなどに入力したデータがそのまま利用される場合、攻撃者は入力フォームから有害なコードを埋め込むことが可能です。悪意あるコードが実行されれば、情報の漏洩や不正な操作につながります。サニタイズにより、コードによる攻撃リスクを抑制できます。

サニタイズの歴史

サニタイズの考え方は、インターネットの初期から存在します。インターネット初期のWebアプリケーションでは、ユーザーが入力した情報を、そのまま表示したり処理したりするケースがほとんどでした。ただ、入力情報通りの処理が行われる場合、サイバー攻撃を受けるリスクが高まります。

実際に多くのサイバー攻撃被害があり、サニタイズに関する技術が発展しました。近年では、多数のプログラミング言語やフレームワークに、サニタイズを手軽に実施するための機能が実装されています。

サニタイズが必要な5つの理由

サニタイズが必要な理由として、以下の5つが挙げられます。

  • サイバー攻撃の高度化・巧妙化
  • XSS(クロスサイトスクリプティング)への対策
  • データベースの保護
  • コンプライアンス強化
  • 入力データの安全な処理とシステムにおける安定性の維持

ここからは、上記それぞれの理由について詳しく解説します。

サイバー攻撃の高度化・巧妙化

DXなどの影響によるWebサービス活用の増加にともない、サイバー攻撃も増えています。また、攻撃手法が日々進化しており、対策の難易度が高まっています。従来の単純なフィルタリングだけでは、近年の高度なサイバー攻撃の防止が困難です。サニタイズであれば、新たなサイバー攻撃の方法にも対応できるケースがあります。

XSS(クロスサイトスクリプティング)への対策

サニタイズは、XSS(クロスサイトスクリプティング)への対策として有効です。クロスサイトスクリプティングとは、Webサイトに罠を仕掛けユーザーを偽ページに誘導するサイバー攻撃のことです。具体的には、Webサイトにおける脆弱性を利用して、攻撃者が悪意あるコードを埋め込みます。ユーザーが該当サイトを閲覧した際に、プログラムが実行される仕組みになっています。

クロスサイトスクリプティングは古くから活用されている手法ですが、現在でも最も多くの被害を生み出しています。被害に遭えば、偽ページへの誘導による情報の窃盗やファイル破損などにつながるでしょう。
⇒クロスサイトスクリプティングとは?攻撃の仕組みや対策方法を解説

データベースの保護

サニタイズによりSQLインジェクション攻撃を防止し、データベースを保護できます。SQL(Structured Query Language)とは、データベースを操作するためのプログラミング言語のことです。SQLインジェクションは、想定外のSQL文を送信して、データベースを不正使用する攻撃です。

データベースの整合性を脅かし、個人情報や機密データを窃盗します。また、Webサイトの活用停止を目的に、データベースを破壊するケースもあります。

コンプライアンス強化

コンプライアンス強化が求められていることも、サニタイズが必要な理由です。近年は、プライバシー保護に関する注目度が高く、世界各国の法規制やルールで適切なデータ保護措置の実施が必要とされています。例えば、EUの個人情報の保護に関する法的枠組みであるGDPRにおいて、個人データの適切な安全性を確保することが求められています。

また、個人情報や機密データが流出した場合、企業の信頼性やブランドイメージが低下するでしょう。大きな打撃を受け、企業活動の維持が困難になるケースもあります。サニタイズは、法的要求事項の達成やコンプライアンス強化に効果的な対策です。

入力データの安全な処理とシステムにおける安定性の維持

サニタイズは、入力された不正データがシステムに入り込むことを防ぎます。Webアプリケーションやオンラインサービスでは、ユーザーの入力における完全な制御ができません。不正なデータが入力されれば、システムのクラッシュや予期せぬ動作が引き起こされます。

サニタイズは、悪意の有無に関わらず潜在的に危険性があるデータを含め、入力データがシステムに入ることを防止可能です。リスクを軽減し、システムにおける安定性の維持ができます。

サニタイズを行わない場合のリスク

サニタイズを行わない場合、以下の被害に遭うリスクがあります。

  • cookie情報を盗まれる
  • フォーム入力情報を盗まれる
  • Webサイトに偽情報を表示される
  • Webサイト上で強制操作される

ここからは、上記それぞれのリスクについて詳しく解説します。

cookie情報を盗まれる

サニタイズを行わない場合、cookie情報を盗まれる可能性があります。cookieとは、Webサイトからユーザーのブラウザに送信されるテキスト情報のことです。本来は、ユーザーのWebサイト閲覧履歴や設定情報などを保存するために使用されます。ログインに必要なIDやパスワードなどの認証情報もcookieに保存されており、窃盗されれば大きな被害につながるでしょう。

フォーム入力情報を盗まれる

悪意ある第三者が個人情報の不正取得を目的としたフォームをWebサイトに埋め込み、入力情報を窃盗するリスクもあります。氏名・重要などの個人情報やクレジットカード・ネットバンキングの情報を窃盗されれば、金銭的な被害につながります。

Webサイトに偽情報を表示される

サニタイズを行わない場合、不正コードを埋め込まれて、自社のWebサイトに偽情報を表示させられる可能性もあります。万が一、偽情報が拡散されれば、関係者の混乱や炎上などを招く恐れがあるでしょう。

Webサイト上で強制操作される

Webサイト上で強制操作される可能性があるのも、サニタイズを行わないリスクです。具体的には、強制的にページ遷移が実施されるなどの操作が行われます。ページ遷移で怪しいサイトにアクセスすれば、ウイルス感染などの危険性があるでしょう。
⇒パソコンがウイルス感染したらどうする?原因や症状、4つの対策方法について解説

開発言語別サニタイズの実施方法

サニタイズを行う方法は開発言語ごとに異なります。ここからは、以下の開発言語別にサニタイズの実施方法について詳しく解説します。

  • JavaScriptでのサニタイズ方法
  • PHPでのサニタイズ方法
  • SQLでのサニタイズ方法
  • 入力フォームの改善

JavaScriptでのサニタイズ方法

JavaScriptでは、サニタイズ用の関数が用意されていないため、文字や文字列置換用のオリジナル関数が必要です。具体的な参考例は以下の通りです。

function htmlentities(str){
  return String(str)

 .replace(/&/g,”&”)
    .replace(/</g,”&lt;”)
    .replace(/>/g,”&gt;”)
    .replace(/”/g,”&quot;”)
}

上記の「replace(/○/g,”×”)」では、○を×に置換することを意味しており、例えば「&」が「&amp;」に置き換わります。

PHPでのサニタイズ方法

PHPでは、サニタイズをするために以下のhtmlspecialchars関数が存在します。

htmlspecialchars($str, ENT_QUOTES, ‘UTF-8’);

上記の引数には以下の役割があります。

  • $str
    入力された文字列が格納されます。
  • ENT_QUOTES
    「<」や「>」「’」「”」などを置換するルールです。
  • ‘UTF-8′
    サニタイズされた文字列の文字コードを指定する箇所で、基本的にUTF-8が活用されます。

SQLでのサニタイズ方法

SQLでサニタイズを行う場合は、プリペアードステートメントを活用します。プリペアードステートメントとは、SQL文の値をいつでも変更可能にするため、変更箇所だけ変数のようにした命令文を作る仕組みのことです。具体的な参考例は以下の通りです。

$stmt = $dbh->prepare(‘SELECT * FROM users WHERE name = :name’);

上記により、フォーム入力された情報はprepareでSQL文になるため、データベース上の不正操作を防止できます。

入力フォームの改善

入力フォームで、データをチェックし不正な文字列を保存させない設定を行うのも効果的です。例えば、電話番号や郵便番号を入力する箇所に、数字以外の文字や指定した文字数以上を入力できなくします。

なお、入力データのチェックは、ブラウザ上ではなくサーバー上で行いましょう。JavaScriptによりブラウザ上にチェック機能を実装しても、攻撃者がJavaScriptを無効化すればチェックを突破されます。

サニタイズの今後

サニタイズを行う技術は日々進化しています。最近では深層学習でユーザーの入力データにおける安全性を自動判別する技術や、リアルタイムでのサニタイジング処理を行う技術などが研究されています。今後も、サニタイズは情報セキュリティにおける重要な役割を担い続けるでしょう。

まとめ

サニタイズとは、ユーザーが入力したデータに含まれる特別な意味を持つ可能性がある文字や文字列を、一定の規則に基づき、別の表記に置き換えることです。サニタイズを行うことにより、以下のリスクを避けられます。

  • cookie情報の窃盗
  • フォーム入力情報の窃盗
  • Webサイトにおける偽情報の表示
  • Webサイト上での強制操作

ただ、近年のサイバー攻撃は高度化・巧妙化しており、情報漏洩を100%防ぐことが困難なため、漏洩をいかに早く察知し、適切な対応を取れるかが重要です。情報漏洩監視ツール「ダークウェブアイ」は、会社のドメイン情報を入れるだけで「いつ」「どこから」「どんな情報が」漏れてしまったのか、一瞬で分かります。

自社情報が漏洩していないか不安な方は、まずは自社の漏洩状況を確認してみてはいかがでしょうか?
⇒メールアドレスを入れるだけ!自社の漏洩状況をチェック!

まずはお気軽にご相談ください
お問い合わせフォーム