資料請求リスト
0

サニタイジングとは?概要から実施方法を簡単に分かりやすく解説!

サニタイジングとは?概要から実施方法を簡単に分かりやすく解説!

サニタイジングとは、Webアプリケーションにおけるセキュリティ対策の1つです。SNSや掲示板から投稿された文字列に含まれる有害な文字・文字列を検知して無害化することをいいます。

この記事では、サニタイジングの概要から必要性、実施方法まで解説します。自社の情報を守る参考にしてください。

\ 無料で一括資料請求!/

サニタイジングとは

サニタイジングは、掲示板やSNSなどの入力フォームの内容をチェックして、含まれる有害な文字・文字列を検知し、無害化することです。有害な文字・文字列としてはHTMLタグやjavascript、SQLコードなどがあります。元々の英語としては「sanitizing=消毒、衛生的にすること」を意味します。

無害化する手段はいくつかあります。そのうち代表的なのが、文字・文字列を元の表記と同じ意味を持つ別の表記に置き換えるエスケープ処理です。エスケープによる対処が難しい場合は、対象のプログラムを削除することもあります。

たとえば、HTMLタグ<br>の「<」「>」の部分をそれぞれ「&lt;」「&gt;」にエスケープすると、「&lt;br&gt;」となります。こうすることで、受け取ったデータがWebアプリケーションにとって意味を持つ<br>であっても、特別な意味を持たない単なる文字列として取り扱えるようになります。

サニタイジングの必要性

サニタイジングはXSS(クロスサイトスクリプティング)対策として有効です。XSSはサイバー攻撃の1つで、Webサイト上の入力フォームに不正なプログラムを仕掛けることで成立します。

XSSの脅威の例としては以下のものがあります。

  • ■セッションハイジャック
  • ■個人情報の不正取得
  • ■フィッシング詐欺

たとえば、攻撃者はSNSや掲示板などの動的サイトに悪意あるプログラムを仕掛け、ユーザーを偽サイトに誘導することが可能です。そこでユーザーにログインID・パスワードなどを入力させ、不正に取得できます。

しかし、サニタイジングをすれば攻撃者によって仕掛けられたプログラムを無害な文字・文字列に置き換えられ、被害を防げます。

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

サニタイジングはHTML生成時のタイミングで実施します。その方法を3つ見ていきましょう。

JavaScriptでオリジナルの関数を使う

JavaScriptにはサニタイジング用の関数はありません。しかし、独自に文字列を置換する関数を定義してサニタイジングを実施することは可能です。

以下に例を示します。

function htmlentities(str){
  return String(str).replace(/&/g,"&amp;")
    .replace(/</g,"&lt;")
    .replace(/>/g,"&gt;")
    .replace(/"/g,"&quot;")
}

replace(/〇/g,"◆")は、「〇を◆に置き換える」ことを意味します。

上記の関数 htmlentitiesにより「&→&amp;」「&lt;→<」「&gt;→>」「&"→"」という置き換えが行われます。この置換により、入力文字列strをHTMLとしては意味のない文字・文字列に変換します。

PHPでhtmlspecialchars関数を使う

PHPには、あらかじめサニタイジングに使えるhtmlspecialchars関数が用意されています。

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

これを利用するだけでサニタイジングが実現します。そのため、前述したJavaScriptとは違い、独自に置換関数を定義する必要はありません。

ちなみに、上記の関数における引数はそれぞれ以下の役割を果たします。

$str
この部分に入力された文字列を設定します。
ENT_QUOTES
サニタイジングのルールで、基本的には「ENT_QUOTES」が使われます。これは「<」や「>」「'」「"」を置換するルールです。
‘UTF-8′
サニタイジングされた文字列の文字コードを指定します。

SQLでプリペアードステートメントを行う

SQLではプリペアードステートメントを利用することでサニタイジングを実施できます。プリペアードステートメントは、「SQL実行前にSQL文をコンパイルしておき、実行時にパラメータ変数に値を当てはめる」ような動作をします。

例を1つ見てみましょう。

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

プリペアードステートメントでは上記のようにprepare()を使います。括弧の中にSQL文を入れると、それがあらかじめ準備(プリペアー)された文章となります。

しかし、この時点ではまだ括弧内のSQL文は完成していません。末尾に「:name」とありますが、これは具体的なデータではなく仮の固定値だからです。実行時に、この部分に具体的なデータが入ることで、初めてSQL文が完成します。

この仕組みを利用すれば、想定しないSQL文が実行され、データベースを不正操作されることを防止できます。

サニタイジングをしてセキュリティを向上させよう!

サニタイジングとは、SNSや掲示板の入力フォームの内容をチェックして、含まれる有害文字・文字列を検知し、無害化することです。その方法として、特定の文字・文字列を別のものに置き換えるエスケープが使われます。

サニタイジングにより、有害な文字・文字列としてはHTMLタグやjavascript、SQLコードを実行してしまうリスクを回避できます。

適切にサニタイジングを行い、セキュリティレベルを高めましょう。

\ 無料で一括資料請求!/
この記事を読んだ人は、こちらも参考にしています

話題のIT製品、実際どうなの?

導入ユーザーのリアルな体験談

電球

IT製品を導入しDXに成功した企業に

直接インタビュー!

電球

営業・マーケ・人事・バックオフィス

様々なカテゴリで絶賛公開中

私たちのDXロゴ
bizplay動画ページリンク
動画一覧を見てみる
IT製品・サービスの比較・資料請求が無料でできる、ITトレンド。「サニタイジングとは?概要から実施方法を簡単に分かりやすく解説!」というテーマについて解説しています。サイバー攻撃対策製品の製品 導入を検討をしている企業様は、ぜひ参考にしてください。
このページの内容をシェアする
facebookに投稿する
Xでtweetする
このエントリーをはてなブックマークに追加する
pocketで後で読む
認知度、利用経験率No.1のITトレンド サイバー攻撃対策製品年間ランキング
カテゴリー関連製品・サービス
カテゴリー関連製品・サービス
SKYSEA Client View
Sky株式会社
☆☆☆☆☆
★★★★★
★★★★★
4.0
Votiro Secure File Gateway
株式会社アズジェント
☆☆☆☆☆
★★★★★
★★★★★
0.0
BLUE Sphere
株式会社アイロバ
☆☆☆☆☆
★★★★★
★★★★★
4.8
Cloudbric WAF+
ペンタセキュリティ株式会社
☆☆☆☆☆
★★★★★
★★★★★
5.0
AppGuard Small Business Edition (SBE)
DAIKO XTECH株式会社
☆☆☆☆☆
★★★★★
★★★★★
0.0
AppGuard Enterprise
DAIKO XTECH株式会社
☆☆☆☆☆
★★★★★
★★★★★
4.5
<SOPHOS>Intercept X
株式会社ジャパンコンピューターサービス
☆☆☆☆☆
★★★★★
★★★★★
4.0
Trend Micro Cloud One™ Workload Security
トレンドマイクロ株式会社
☆☆☆☆☆
★★★★★
★★★★★
3.4
CylanceMDR
エムオーテックス株式会社
☆☆☆☆☆
★★★★★
★★★★★
0.0
「攻撃遮断くん」
株式会社サイバーセキュリティクラウド
☆☆☆☆☆
★★★★★
★★★★★
4.2
セキュアエンドポイントサービス(Va)
株式会社 USEN ICT Solutions
☆☆☆☆☆
★★★★★
★★★★★
0.0
カテゴリー資料請求ランキング
カテゴリー資料請求ランキング
03月31日(月)更新
ITトレンドへの製品掲載・広告出稿はこちらから
サイバー攻撃対策製品の製品をまとめて資料請求