![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
使いやすいようにラッパー関数は作っておきましょう。
function h($str) {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
MVCを意識すれば必然的にHTML中に埋め込むようになって
<p><?php echo $id ?></p>
もしくは
<p><?=$id?></p>
とすることが多いと思います(PHP5.4以降であれば後者推奨)。この際、「このデータは安全」「このデータは安全じゃない」といった判断をプログラマがその都度行うこと自体にセキュリティホールを作ってしまう可能性を秘めています。出力する全ての値はh関数によりエスケープし、
<p><?=h($id)?></p>
とした方が賢い選択です。
...というのはあくまで建前の話で、さすがに $_SESSION['id'] といったようなものは明らかに安全であることが分かっていますね。全ての値のエスケープが推奨されるのは、全体で統一していた方が美しいから、といった理由もあると思います。今日のCPUスペックからすれば多少処理が増えたところでレスポンスタイムに全く影響しませんしね。
No.2
- 回答日時:
>SESSION変数を表示するときはhtmlspecialcharsを使ったほうがいいでしょうか?
何が入っているかに依存です。
例示されている$_SESSION['id']のようなものならhtmlspecialcharsする必要があるとは思えませんが、フォームから入力されたデータを持ち回るのにセッションに入れたなんてケースでは当然必須です。
∴ 悩みたくなければhtmlspecialcharsを使っておけばいいと思います。
なおhtmlspecialcharsした結果を変数に格納する意味はないので(ブラウザに返すとき限定のエスケープなので)
$xxx = htmlspecialchars($_SESSION['xxx'], ENT_QUOTES);
echo $id;
ではなく
echo htmlspecialchars($_SESSION['xxx'], ENT_QUOTES);
と書くべきだと思います。
この回答へのお礼
お礼日時:2014/02/18 14:44
回答ありがとうございます
フォームから入力された値はhtmlspecialcharsをつかって、サーバー側のみで作った値は使わない方向でやっていこうと思います。ありがとうございました
今回は$_SESSION変数にはフォーム入力やgetからは使っていないので今回は必要なさそうです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- PHP 書籍よりも より良い htmlspecialchars の変更を 1 2022/04/18 02:28
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP isset — 変数が宣言されていること、そして null とは異なることを検査 1 2022/03/27 17:34
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでpingの結果を...
-
switch()文で値の大小比較
-
Dosブロンプトでtabを出力したい
-
phpでcookieがうまく保存されない
-
文字化け(Shift-jis→UTF-8変換...
-
PHPで日付の入力内容をチェック...
-
phpにおいて$xを計算式の文字列...
-
PHP 四則演算について
-
findstrのerrorlevel
-
ページ表示ごとにカウントダウ...
-
1行でかくIF文が作用しない
-
私の考えがそもそも、間違って...
-
Windowsのsetコマンドでの小数...
-
カレンダーについて教えてくだ...
-
文字列から期間算出 09-12 12-12
-
webで一円と五円と十円の枚数を...
-
オブジェクトの中身の判定(PHP)
-
'2/1'を'02/01'に変換 (修正版)
-
可変関数について。また、どこ...
-
shシェルスクリプト 空白行の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
phpでcookieがうまく保存されない
-
小数点以下0の非表示
-
バッチファイルで、全てのウィ...
-
ゼロとNULLを区別して number_f...
-
Windowsのsetコマンドでの小数...
-
オブジェクトの中身の判定(PHP)
-
DBのハッシュ化したパスワード...
-
XMLのタグの有無をPHPで判定し...
-
pdftkを使った処理をバッチファ...
-
batファイルでPC名称の変更
-
変数の中の<br>を消したい
-
bashの関数の引数にスペースが...
-
csvの特定のキーワードを指定し...
-
htmlで複数の個数入力欄を表示...
おすすめ情報