人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

$_SESSION 関数のサニタイズについて

例えば下記のようなコードの場合、
$_SESSIONに不正なコードが入れられる可能性はありますでしょうか?
(出力時にサニタイズ必要でしょうか?)

$_SESSION['hoge'] = htmlspecialchars($_POST['hoge']);

※hogeは、GET,POST,DB等では取得せず、直接ファイルに記述する。

セッション乗っ取られたらダメなような気はして、調べているところです。。。

●質問者: kou32rr
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB hoge コード サニタイズ セッション
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

PHPについてのご質問ということでよろしいですね。

失礼ながら、「サニタイズ」と「セッション・ハイジャック」(乗っ取り)を混同していませんか。


サニタイズを行う前に、まず、その入力データの利用目的を特定します。

$_SESSION['hoge'] の内容を静的な HTML ページに表示するだけであれば、関数htmlspecialcharsを使ったサニタイズは有効です。

しかし、たとえば $_SESSION['hoge'] を使って数値演算を行うなら、数値以外の文字が含まれていないことをチェックする必要があります。

このように、サニタイズとは、入力データの利用目的に応じて臨機応変に行うものです。


一方、セッションハイジャックとは、セッションIDやCookieなど、セッションを識別するための値を盗んだり偽装したりして $_SESSION 変数に入れられてしまう場合を指します。

これはサニタイズして防げる性質のものではなく、他の防衛手段を用意する必要があります。


参考サイト


2 ● b-wind
●35ポイント ベストアンサー

基本的には考え方としては合ってるけど、実装上の問題はあるらしい。

htmlspecialchars/htmlentitiesの正しい使い方


セッションは乗っ取られようがなんだろうがセッションファイル(またはそれに相当するもの)

がサーバー上にある限り、直接はさわられることはない。

もちろんセッションハイジャックされる事自体の問題はいったん置くとして、だが。


ただし、それはそれとして htmlspecialchars を使用するタイミングは間違っている。

「サニタイズ言うなキャンペーン」私の解釈

上記URLのDBの部分をセッションに置き換えてみてほしい。


結論としては、「あなたの心配している問題は無いが、他の側面からの問題はある」と言うことになる。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ