
サニタイズって何でしょうか。サニタイジングとも呼ばれるようなのですが、よく分かりません。
このような疑問に回答します。
・サニタイズは特殊文字の無害化
・SQLインジェクションやXSSへの対策!
セキュリティ関連で「サニタイズ」という用語を聞いたことはありますでしょうか。今回は、サニタイズについて解説します。本記事を読むと、サニタイズについての概要を掴むことができます。なお、サニタイズの意味は様々な解釈がございますので、参考程度にご一読ください。
サニタイズとは?
サニタイズについて、説明するで!


お願いします!
サニタイズ(サニタイジング:sanitizing)は、HTMLの特殊文字を、一定のルールに則って別の表記に置き換えることを意味している。「無害化」するとも言われる。「エスケープ」とも呼ばれることがあるで。


特殊文字って何ですか・・・?
特殊文字というのは、「&」や「>」のことや。サニタイズは、特殊文字を単純なテキストデータとして扱うために行われる。


特殊文字は記号みたいな感じなんですかね。
せやな。特殊文字の無害化の例を紹介するで。例えば、「&」を無害化すると「&」と表現できる。「>」は「>gt;」と表現して無害化できるんや。特殊文字のままにしておくと、悪用されてしまう危険があるからな。


記号などの特殊文字を、悪用されないように別の表現に変えているのですね。サニタイズしないと、どのように悪用されてしまうのでしょうか。
特殊文字はHTMLで使うことができるやろ。せやから、HTMLを外から操作できないように文字列を無害化しているんや。つまり、特殊文字をHTMLのタグとして認識されないようにサニタイズをしている。


・・・タグって何ですか?
HTMLなどのマークアップ言語は、タグと呼ばれる文字列によって表現されているんや。例えば、brというタグは、「改行」を意味する。実際にHTMLで改行をしたい場合は<br>のように、タグ名をはさむんや。しかし、無害化する場合には、特殊文字を別の文字列に置き換える。


ふむふむ。
例えば、以下のようなHTMLコードがあって、無害化したいとする。ちなみに、h2というタグは見出しのことや。

<h2>特殊文字</h2>

以下のようにサニタイズ処理を行う。
<h2>特殊文字</h2>

なるほど。HTMLとして意味をなさないようにサニタイズすると、第三者がHTMLの特殊文字を使えなくなるのですね。
せやな。無害化しているからな。ただの文字列に変えるんや。


実際、どのように攻撃を仕掛けられてしまうのでしょうか。
例えば、攻撃者がWebサイトの問い合わせフォームから、悪意のあるスクリプトやコマンドを入力される。せやから、悪意のある文字列がHTML出力やコマンドとして実行される前に、サニタイズを行うことで、予め攻撃を阻止することがでできる。


つまり、攻撃の無害化をするようなイメージですね!
せやな。有害な文字列を無害なものに置き換える。サニタイズを通して、SQLインジェクションやクロスサイトスクリプティングの攻撃を防ぐことが期待できるぞ。


SQLインジェクションとクロスサイトスクリプティングという攻撃手法についても知っておきたいです!
SQLインジェクションとは?
SQLインジェクションは、不正なSQLをWebサイトにインジェクションされる攻撃やな。サイトの入力フォームに悪意のあるSQL文を入力され、SQLが誤作動を起こすんや。ちなみにSQLはデータベース言語や。SQLインジェクションはデータベースを操作する言語やから、個人情報を盗まれてしまうリスクがあるな。


情報漏えいは怖いですね。この場合は、SQL文に対しサニタイズをする感じですかね。
クロスサイトスクリプティングとは?
せやな。次に、クロスサイトスクリプティング(XSS)は、Webアプリケーションへの攻撃手法の一つや。Webアプリケーションの脆弱性を突いた攻撃で、第三者が、Webサイトに対して悪意のあるスクリプトを組み込む攻撃になる。


ほうほう。
不正なスクリプトを入力フォームなどから入力されないように、サニタイズすることで対策するんや。XSSも恐ろしい攻撃やで。Webサイトの管理者は、Webサイトの改ざんに気付かないことも少なくなく、そのサイトに訪問したユーザーが被害を受けるリスクが高まる。


恐ろしいですね・・・
まとめ
サニタイズについて、なんとなく分かったかな?


はい!
サニタイズ(サニタイジング:sanitizing)とは、HTMLの特殊文字を、一定のルールに則って別の表記に置き換えること

ですね!
ふむ、よろしい。


セキュリティ対策として行われることなんだと理解できました!
せやな。サニタイズについては、何となくこういうものだという理解をしていれば良いぞ。これからも、わからんかったら俺に聞くんやで!
