スレッド表示 | フラット表示〕 全トピック 920 件中 726 番目 次≫ ≪前

extract

created: 2003-10-25 20:49 | modified: 2003-11-23 17:33 | reply: 4

[818] extract

user: サガ | created: 2003-10-25 20:49
またまた質問ですが、
私はregister_globals = Offに対応するために「register_globals 一時しのぎ」にある方法ではなく、
extract($_POST);
extract($_GET);
extract($_SERVER);
のようにextract関数を使用しているのですが、これはセキュリティー面ではどうなのでしょうか?
reply: 820 返信 編集 削除

[820] register_globals = On の危険

user: ゆうじ | created: 2003-10-25 22:49
extract() は知りませんでした。
これなら同じ結果が得られますので、
「register_globals 一時しのぎ」は必要ありませんね。
後ほどページのほう訂正しておきます。
ありがとうございました。


さて、セキュリティー面はというと、
それらのスーパーグローバル変数が全て展開されるので
register_globals = On と同じセキュリティーですね。

register_globals = On で起こりやすい危険は、
POST で受け取るべき変数を GET で上書きされてしまうことです。


例えば、
POSTメゾット で $hoge という変数を受けとり、
処理する hogehoge.php というスクリプトがあった場合、

register_globals = On であったり、
extract でスーパーグローバル変数をインポートしてしまうと
hogehoge.php?hoge=XXXXX とやれば、
$hoge は XXXXX で初期化されてしまいす。

悪意ある人がどのような値を送信するかわかりませんので、
やはり GET は $_GET で、POST は $_POST で
それぞれに受け取り処理するべきだと思います。
Parent: 818  reply: 822 返信 編集 削除

[822] register_globals = On の危険(2)

user: ゆうじ | created: 2003-10-27 19:55
register_globals = On の危険性について
もうひとつ思い出したので追記させていただきます。

危険2:
初期化されていないグローバル変数を任意の値に設定できる。

[820]で例に挙げた、hogehoge.php は、
一見変数 $hoge だけを受け取るように思われるかもしれませんが、
$hoge 以外の変数が渡されることもありえます。

内部で $good というグローバール変数を使用していた場合、
$good を受け取るつもりがなくても、

hogehoge.php?good=XXXXX

これで、$good が XXXXX に初期化されてしまいます。

対策としては、
グローバル変数は参照する前に必ず初期化することです。

スクリプトのはじめ方で
$good = ""; とか、$good = array(); のように、
変数の型に合わせた初期化を行えば、
不正な値を上書きしてしまうので
どのようなアクセスがあったとしても
グローバル変数は安心です。
Parent: 820  reply: 834 返信 編集 削除

[834] ありがとうございました。

user: サガ | created: 2003-10-29 15:50
大変勉強になりました。ありがとうございました。
Parent: 822  reply: 1081 返信 編集 削除

[1081] 【訂正】外部から来る変数の優先順

user: ゆうじ | created: 2003-11-23 17:33
サガさんすみません。
私、外部から来る変数が展開される順番を、
間違っておしえてしまいました。すみませんでした。

外部からくる変数に同じ名前がある場合、
variables_order = \"EGPCS\" に基づいて、
左から展開されるので、最終的に残るのは、
より右にあるものになります。

register_globals のセキュリティーに関する記事を、
こちらにまとめましたのでご覧いただければと思います。

register_globals = On の恐怖
http://www.sound-uz.jp/php/note/registerGlobals
Parent: 834  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 726 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑