ざっくりと
- Webセキュリティの手段
- 無害化するエスケープ処理
- XSSやSQLインジェクションを防ぐ
サニタイジングとは、Web攻撃を防ぐ無害化手段です。
概要説明
サニタイジングとは、Webアプリケーションのセキュリティ対策の一つである。 なぜなら、悪意のあるコードを含むHTMLタグやJavaScript、SQL文を無害化するからだ。
例えば、ユーザからの入力値をそのまま使用せずに、エスケープ処理することで、攻撃コードを無害化する。そして、XSSやSQLインジェクションなどの攻撃からサイトを守る。
つまり、Webサイトの安全性を保つ重要な手段である。だから、サニタイジングの理解と実施は必須。
サニタイジングのコード例
Pythonではhtml
というライブラリが用意されていて、その中にはサニタイジングを行う関数escape()
がある。この関数は、HTMLの特殊文字(たとえば ‘<‘, ‘>’, ‘&’ など)を対応するHTMLエンティティに書き換える。
import html
def sanitize(user_input):
return html.escape(user_input)
user_input = "<script>alert('Bad!');</script>"
sanitized_input = sanitize(user_input)
print(sanitized_input)
このコードを実行すると、user_input
に入っていた<script>alert('Bad!');</script>
が<script>alert('Bad!');</script>
という形に書き換えられる。<
や>
がそれぞれ<
と>
に変換されることで、ブラウザはこれをタグとして解釈しなくなる。これはサニタイジングの一例。
職業職種
Webデベロッパー
Webデベロッパーは、サニタイジングを行う。なぜなら、Webアプリケーションのセキュリティを担当しているからだ。例えば、ユーザからの入力を適切に処理して、悪意のあるコードを無害化する。
システム管理者
システム管理者も、サニタイジングを行う。なぜなら、全体のシステムセキュリティを確保する役割を持っているからだ。例えば、システム全体の脆弱性をチェックし、必要に応じてサニタイジングを適用する。
セキュリティエンジニア
セキュリティエンジニアも、サニタイジングを使う。なぜなら、最前線でシステムのセキュリティを守る役割があるからだ。例えば、新たな脅威に対して迅速に対応し、サニタイジングを含む対策を立てる。
サニタイジングは、英語の “sanitize”(無害化する)から来ています。
代表例
Googleは、サニタイジングの大手企業だ。なぜなら、彼らのWebアプリケーションではこの技術を幅広く活用しているからだ。例えばGmailでは、ユーザーの安全を確保するために入力内容のサニタイジングを行っている。
Facebookは、サニタイジングを行うことでセキュリティを強化している。なぜなら、ユーザーが投稿する内容を無害化することで、XSSやSQLインジェクションといった攻撃からユーザーを守っているからだ。
Cloudflare
Cloudflareは、サニタイジングの専門企業である。なぜなら、Webアプリケーションのセキュリティを向上させるための数多くのサービスを提供しており、その中にはサニタイジングも含まれているからだ。
手順例
Webアプリケーションでのサニタイジングの手順です。入力情報の受け取り
最初は、ユーザーからの入力情報を受け取る。なぜなら、これがサニタイジングの対象となるデータだからだ。
サニタイジングの実行
次に、受け取った入力情報をサニタイジングする。なぜなら、これによりデータを安全な形に変換できるからだ。
サニタイジング後のデータの利用
最後に、サニタイジングしたデータをアプリケーション内で使用する。なぜなら、このデータは無害化されているので、安全に利用できるからだ。
類似語
エスケープ処理
エスケープ処理は、サニタイジングと同じくデータを安全にする手法だ。なぜなら、特殊な文字を別の表現に置き換えることで、予期せぬ動作を防ぐからだ。
データクリーニング
データクリーニングも、サニタイジングと同じ目的を持つ。なぜなら、こちらも不適切なデータを排除してデータの品質を保つ手法だからだ。
バリデーション
バリデーションは、サニタイジングと共によく使われる。なぜなら、入力データが期待する形式に合っているかを確認することで、データの信頼性を保つからだ。
反対語
脆弱化
脆弱化は、セキュリティの弱点を作ることだ。なぜなら、安全性を落とす行為だからだ。例えば、パスワードを簡単に設定することだ。
会話例
友達との会話で、Webサイトのセキュリティについて話す場面
Q.「なんでWebサイトはサニタイジングが必要なの?」
A.「それは攻撃者が悪意あるコードを埋め込むのを防ぐためだよ。」
教師が生徒にコンピューターセキュリティについて教える場面
Q.「サニタイジングって具体的に何をするの?」
A.「コード中の特殊な文字を無害な形に書き換えるんだ。」
注意点
サニタイジングを行う時の注意点は正確性だ。なぜならば、間違った書き換え方をすると、元の意味が変わってしまうからだ。
例えば、1<2
という比較を行うコードが1<2
と書き換えられた場合、<
という記号がHTMLのタグと誤解されなくなる。だから、正確に行う必要がある。
サニタイジングとエンコーディングは、間違えやすいので注意しましょう。サニタイジングは攻撃を防ぐための無害化で、エンコーディングはデータの形式を変えることです。
コメント