![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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ランキング
-
VBAで重複チェックの仕方を教え...
-
asp.netでのセッションを使用し...
-
CGIとPHPの違い
-
PHPファイルの裏側を知りたいです
-
IFRAME内PHPのセッション変数取...
-
phpでフォーム登録したものがチ...
-
ログイン画面から入って、「戻...
-
HTMLエスケープ処理とデーター...
-
php/MySQLによるログイン認証に...
-
動的にhtmlテーブルを表示
-
ページを段階的に表示するには
-
アップロードした画像の削除
-
飛び先のランダムURLの取得方法...
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
「取得先」という表現について
-
DTOとEntityの差は何ですか。
-
shシェルスクリプト 空白行の...
-
【C#】DataGridViewの最大列数...
-
VBA コレクションに2次元配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
POSTで受け渡したものを保存し...
-
php 入力画面から確認表示画面...
-
フォームを使わずにPOST送信す...
-
ログイン画面から入って、「戻...
-
VBAで重複チェックの仕方を教え...
-
動的にhtmlテーブルを表示
-
ブラウザバックしてもチェック...
-
HTMLエスケープ処理とデーター...
-
php history.back()の戻るボタ...
-
asp.netでのセッションを使用し...
-
IFRAME内PHPのセッション変数取...
-
セッション使用時のフォームの...
-
閉じるボタン「×」を制御したい
-
PHPで返信メールにチェックボッ...
-
HTMLエスケープすべき場所につ...
-
PHPで値を保持する方法
-
php/MySQLによるログイン認証に...
-
リストボックスにテキスト入力...
-
cURL関数を使用したphpからのpo...
-
GETのメリットについて
おすすめ情報