HTMLエスケープすべき場所について教えてください。
エスケープ処理は、利用目的に応じてなるべく直前に行なう、という原則に基づくと、
下記考え方で合っているでしょうか?
■確認したい項目1.
▽受取側のページ
例えば、if(isset(($_POST['hoge'])){~
の時点では、存在確認をしているだけなので、エスケープ処理は必要ない。
■確認したい項目2.
自由入力できるテキスト欄は、POST・GETどちらも、画面表示処理の直前に、エスケープ処理が必要。
■確認したい項目3.
▽予め選択肢があるプルダウン等
→POST…送信データを変更される可能性がないため、エスケープ不要。
→GET…ブラウザのURL欄を通じて送信データを変更される可能性があるため、エスケープは必要。
■確認したい項目4.
hiddenで送信するデータは、POST・GETどちらも送信データを変更される可能性がないため、エスケープ不要。
この考え方で、合ってますでしょうか?
なるべく推奨されるやり方で書きたいと思いますので、アドバイスをよろしくお願いします。
No.1ベストアンサー
- 回答日時:
>■確認したい項目1.
合ってます。
不要というか、そもそも値があるかどうかもわからないのに何をエスケープするのか。
>■確認したい項目2.
合ってます。
表示というか、変数や式の値の出力の直前ですね。
>→POST…送信データを変更される可能性がないため、エスケープ不要。
間違い。
>hiddenで送信するデータは、POST・GETどちらも送信データを変更される可能性がないため、エスケープ不要。
画面上、HTML的にどんな意味を持つかに関係なく、変数や式の値をHTML画面の一部として出力する際にはエスケープが必要です。
こんな間違いをすると言うことは、どうやって攻撃されるのかの基本がわかってないと思います。攻撃者はブラウザを通常操作する訳じゃなくて、手作成もしくはプログラムでリクエストを生成して送ってくるんですよ。すべての値が操作可能です。
No.2
- 回答日時:
#1さんもご提示されているとおり、「ユーザーから送られてくるデータはすべて汚染されている」
と考えるべきでしょう
そうすればやるべきことは自明で、バリデートとサニタイズをしたうえで、適当な
エスケープ処理をかけてやるのが妥当です。
ちなみにプルダウンで取得したデータをプルダウンで表示する場合は、
selectedの付け替えになるので、エスケープすることはないかもしれません。
またhiddenでデータを送信するのはあまり有効な手段ではないので
セッションなどで代替することをお勧めします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- 所得税 電子税?のメールについて教えてください 8 2022/09/04 21:38
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- Amazon アマゾン 7 2022/06/11 11:03
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Android(アンドロイド) Googleからのメールに対してどう操作するのか? 1 2023/01/08 19:34
- gooのスマホ ほっとくと+メッセージ(ショートメール)が使えなくなるってこと? 3 2022/07/13 07:49
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- 大学受験 今日三者面談で、先生に出願したか聞かれました 僕の志望校がインターネット出願かつ 募集要項もインター 1 2023/07/20 11:53
- 法学 *注意:正しい選択肢を選ぶ問題です。 表現の自由と名誉毀損罪に関する次の説明のうち,最も適当なものを 1 2022/11/27 08:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
POSTで受け渡したものを保存し...
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
「取得先」という表現について
-
excel access連携 このテーブル...
-
バッチファイルでpingの結果を...
-
DTOとEntityの差は何ですか。
-
switch()文で値の大小比較
-
ps3で久しぶりにCDの音楽情報取...
-
Yahoo! JAPAN IDを新規取得でき...
-
phpでcookieがうまく保存されない
-
URLのパラメータをGETのままで...
-
アップロードしたファイル名に...
-
「次の10件を表示する」のよ...
-
EXCEL、マクロ-改ページ行番号...
-
vb作成したらでbeep音が鳴りま...
-
CakePHP リッチテキストエディ...
-
VB.NETからVBAマクロ(引数)を呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
POSTで受け渡したものを保存し...
-
ログイン画面から入って、「戻...
-
ブラウザバックしてもチェック...
-
php 入力画面から確認表示画面...
-
HTMLフォームのデータ引き継ぎ...
-
VBAで重複チェックの仕方を教え...
-
php history.back()の戻るボタ...
-
セッション使用時のフォームの...
-
HTMLエスケープすべき場所につ...
-
PHPで返信メールにチェックボッ...
-
閉じるボタン「×」を制御したい
-
HTMLエスケープ処理とデーター...
-
携帯サイトにお気に入りに登録...
-
ウェブアプリの設計に問題がな...
-
セッションを使用したページ遷移
-
入力系のプログラミング手法に...
-
GETとPOST
-
asp.netでのセッションを使用し...
-
フォームを使わずにPOST送信す...
-
PHPでのログイン機能でのメール...
おすすめ情報