おずの魔法使い

おずの魔法使い

2006.04.05
XML
カテゴリ: コンピュータ関係
PHPでは php.ini で register_globals の値を設定出来る.
これは何かというとウェブアプリなんかを作るときに ユーザによって入力されたパラメータはGETもしくはPOSTでサーバにやってくるのだけど, その時の変数の取り扱いに関する設定の一つ.

これを on にしておくと 例えば <input type="text" name="n"> なんて感じのとこから来たデータを勝手に 変数$nに代入してくれる. とっても楽ちんである.
PHPの場合通常は (GETならば) $n=$_GET['n']; とかってやらなきゃいけないのだけど, それをはしょることが出来るのだ.

しかし, GETの場合はURLに これらの変数を書くことが出来る. 例えばGoogleなんかで適当な単語(アルファベットの方がわかりやすいかな)を検索してみると URLの中に q=検索した単語 があると思う. ここを書き換えることでサーバに送るパラメータを変えることが出来る. 例えば 勝手に qq=hoge とかってやると qq という変数に hoge という値入れて送信していることになる.
もちろん qq という変数を取り扱うようにしていなければ問題はない…のだが.

ここで register_globals に話を戻そう.
仮に PHP script内部で $qq という変数を使っていたらどうなるだろうか? 勝手にそこにパラメータをいれさせてしまう可能性がある, ということになる.
POSTでデータをやり取りしているはずなのに GET で送り込まれてしまう可能性だってある.

これが register_globals を off にしておくべき理由の一つである.

register_globalsは昔のPHPだとdefaultで on になっていた. その時代に書かれたScriptの中には on になっていることを前提としているものも少なくない.
ここでえらそーなこと書いてるけど, 自分もそういうScriptを書いていて PHPのバージョンアップで動かなくなった…という恥ずかしい過去がある:-p
もちろん, そいつらは速攻で修正をしたよ.
でも 何故に default で off になったのか, それを考えると そこを on にしなければ動作しない Script で, 特に今でもそれを強要するものには大事な理念がすっぽり抜け落ちている, そんな気がするのだなぁ.





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2006.04.05 15:35:42
コメント(7) | コメントを書く
[コンピュータ関係] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


Re:register_globals(04/05)  
こんばんは。
transitional.dtdの件では情報ありがとうございました。

こちらに書かれていたこと、私がPHPを触り始めた頃に遭遇しました。
ONになっていたりOFFになっていたり・・・
ONの文書を読んでいたり、OFFになってからの文書を読んでいたり・・・^^;

できれば、OFFでしていますが
触らせてもらえないこともあります・・・

もう少し日記に書いてあること、読ませていただきますね<(_ _)>
(2006.05.08 20:33:19)

Re[1]:register_globals(04/05)  
tsukas@  さん
まいまい@ブログの本意思考中さん

いえいえ こちらも楽しく読ませて頂きました.
基本的にScriptを書くときに off の状態で動作するようにしておけばいいんですよね.

さわらせてもらえない時は PHP Scriptの中できっちゃいましょう.

>もう少し日記に書いてあること、読ませていただきますね<(_ _)>

あまり 役に立つようなことないかと思いますけど どうぞどうぞ:-p
(2006.05.08 20:37:20)

Re[2]:register_globals(04/05)  
>さわらせてもらえない時は PHP Scriptの中できっちゃいましょう.

およよ?これって「GETは受け付けないよ」とか
条件を付けてあげるとかそういうことでしょうか?
register_globals自体をPHP Script内でoffにできちゃったり!?
興味ありありです!
(2006.05.08 20:49:23)

Re:register_globals(04/05)  
たびたび失礼します。
わかった気がしますので、書き込みに来ました。
例えばGETだたら $n=$_GET['n']; のような状態しか受け付けないようにするってことですよね?
$nは初期化しておくべきなんですよね?

「きっちゃう」方法がよくわかりませんで^^;
(2006.05.08 20:56:16)

Re[3]:register_globals(04/05)  
tsukas@  さん
まいまい@ブログの本意思考中さん

こんな感じでどうでしょ?

ini_set("register_globals", 0);

この手のやつで 文字コード関係のとかまとめた fileを作って置いて require するといいかもしれません.

まぁ on/off どちらでも注意すべきところは注意しておく, という点では変りませんけど.
(2006.05.08 20:58:14)

Re[4]:register_globals(04/05)  
>ini_set("register_globals", 0);
>
>この手のやつで 文字コード関係のとかまとめた fileを作って置いて require するといいかもしれません.
>
>まぁ on/off どちらでも注意すべきところは注意しておく, という点では変りませんけど.
-----

うわっ!超ありがとうございます。
私が勤めていた会社で(只今外注さんしてます)
触り始めたのが私で、相談はできても聞ける人かいなくて
教わる機会なんて皆無だったんです。
すごく嬉しい情報です。
ありがとうございました<(_ _)>
(2006.05.08 21:10:29)

Re[5]:register_globals(04/05)  
tsukas@  さん
まいまい@ブログの本意思考中さん

いえいえ どういたしまして.
では今度是非うちに外注を……って営業してどーする?(笑)
(2006.05.08 21:17:32)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

×

プロフィール

つ!

つ!

コメント新着

わかりません@ 10万円 逝ってよし(´-ω-)☆ <small> <a href="htt…
乗らない騎手@ ちょっとは木馬隠せw あのー、三 角 木 馬が家にあるってどん…
チリチリ@ 次は庭で全裸予定w <small> <a href="http://kuri.backblac…
地蔵@ 驚きのショックプライスw コウちゃんがこないだ教えてくれたやつ、…
ヒゲメタボ@ クマたんと呼ばれてます(^^; 最近はこれが流行ってるって聞いたので …
ディック橋本@ ギリ3人です(笑) <small> <a href="http://iikoto.chorie…
ななやま@ ムダなチラシ広告のポスティング問題をWebで解決する新サービス「エコポスト」 福岡市の株式会社ザイナスは、郵便受けに…

フリーページ

カレンダー

キーワードサーチ

▼キーワード検索


© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: