プログラミング PHP

XSS対策の基本は入力値制限とサニタイジング(無害化)の2つ

投稿日:

XSS(クロスサイトスクリプティング)の基本的な対策は何をすればいいのかがぼんやりしている方向けの書いています。

対策方法はタイトルの通り、XSS(クロスサイトスクリプティング)対策の基本は入力値制限とサニタイジング(スクリプトの無害化)です。

入力値制限

POST/GET送信する入力フィールドの値を制限することで、スクリプト入力ができないようにする対策です。
・数値のみ
・文字数制限
・記号の不許可
によって制限することができます。

サニタイジング(スクリプトの無害化)

画面への表示時にスクリプトが埋め込まれている場合に、タグ等をエスケープして文字列として扱うことで、スクリプトが実行されないようにする対策です。
これは、htmlspecialchars関数で実装します。
例)

入力値制限されているのに、なぜスクリプトが埋め込まれる可能性があるのか?
それは、すべての入力フィールドで上記すべての入力値制限を設定できないケースでは入り込む余地があります。
例えば、ブログ記事の本文は数値と記号も入りますし、文字数が数文字程度に制限はできません。

ではすべての項目にhtmlspecialchars関数を設定しないといけないのかというとそうでもないです。
htmlspecialcharsは文字数が多いため、ラッパー関数として以下のようにすることが一般的です。
※ラッパーとはラップ(包み込む)の人称形です。

Laravel(PHPフレームワーク)では、{{}}と変数を囲むだけでエスケープ処理されます。

まとめ

・入力値制限でスクリプトが入力される可能性を排除する。
・htmlspecialchars関数でスクリプトの実行を無害化できる。
・htmlspecialchars関数はラッパー関数にして使用することが一般的である。
・Laravelフレームワークでは{{}}でエスケープ可能である。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, PHP
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

ExcelをA1セルに揃えて拡大率100%にするツール

(追記:2021年8月18日) サブフォルダを処理対象にするかどうかを選択できるように改修しました。   たくましゅくじょさんのところで公開されていた、 「エクセルで全シートの拡大率を100%にしA1 …

ITエージェントが保有している案件数を比較してみました

概要 ITエージェントが保有している案件はどのくらいあるのか? また、Java案件に参画するにはどのエージェント経由が有利か? というちょっとした興味を元に調べてみました。 調査実施日:2021年5月 …

Camtasia(カムタジア)でKrisp(クリスプ)を使う方法

Camtasiaで動画撮影する時のノイズ除去にKrispを導入する方法です。 前提 Krisp(無料版でOK)をインストール済みであること。 Pro版を試したい方は以下の招待URLからダウンロードして …

プログラミングを上達させるために私がやってきたこと・やっていること

私の上達過程 写経 自分のレベルに合う本をもとに写経しては、コードの意味を調べて理解し、少しづつ体に染み込ませるように身に着けていきました。 とにかく初心者のころは右も左も分からず、ちょっとしたエラー …

オブジェクト指向でじゃんけんを作ってみる

最近、プログラム自体を書いていない時間を多いので、再勉強がてら少しコードを書いてみました。 何を作ったか? テーマ:じゃんけん(1対1) 言語:Java OOPで考慮したこと ・ゲームを管理するコント …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。