『PHP サイバーテロの技法──』より
PHPサイバーテロの技法―攻撃と防御の実際から、まだまだネタを引っ張ります。この本からはネタがいくらでも引き出せます。良書ですね。
ただ、あまりセキュリティ関連の情報を引用すると、この本の購読者が減るかも知れないので、抑えておきます。Web アプリケーションのセキュリティに関心がある人は PEAK XOOPS Support&Experiment – XOOPS site for my test and support を熟読しましょう。
ということで、今回は軽いネタ。
「.htaccess に一行書くだけで、ディレクトリ配下の PHP ファイルすべてに同じ PHP スクリプトを適用できる」
すべてのファイルに「条件付きGET」
ちょうど、小粋空間: PHP ファイルアクセスによるサーバ負荷を削減する という記事がありました。百億万回読むに値する「条件付きGET」のススメ – Ogawa::Memoranda を判りやすく検証しています。
MT などのいわゆる「ブログツール」は「テンプレート」という仕組みがあります。一度テンプレートに記述した (X)HTML や PHP スクリプトなどは、そのテンプレートから生成されるファイルすべてに適用されます。上記の「条件付き GET」も同様に、必要なテンプレートに記述すればいいわけです。
さて、ブログツールが作ったわけではない PHP ファイルが、あるディレクトリに 100 個あるとして、そのすべてに「条件付き GET」のスクリプトを適用したい場合は、どうすればいいでしょうか? (注 : その場合は、別の方法で「条件付き GET」が適用できそうですが、まぁ、空気を読んで見逃してください)
テキストエディタの置換機能を使う? 何かスクリプトを組む?
──それもいいですが、もっと簡単な方法があります。
あったか .htaccess に混ぜるだけ!
実は、.htaccess ファイルに
php_value auto_prepend_file "/path_to/hoge.php"
と一行書くだけで、ディレクトリ配下の PHP ファイルが読み込まれる際に、自動的に /path_to/hoge.php が実行されます。「え、マジで?」 ──マジで。ということで「条件付き GET」の部分だけ記述した hoge.php を用意するだけです。
──えっと、うん。たぶん、もの凄い常識というか、パフォーマンス的にどうなん? という感じですが、ちょっと感動。
php.ini が変更できなくても
常識ついでに──PHP の設定は“php.ini”に書くのが通常ですが、レンタルサーバでは変更できないことが多いです。でも実は、.htaccess に書いて設定することもできますよ(ただし変更できない設定もあり)。
ref.: 【 ほでなすPHP 】 PHPのインストール -> 「.htaccess」ファイルでの設定
「register_globals問題」が気になる人は、.htaccess に下記を記述することを検討してもいいでしょう。
php_flag register_globals Off
ref.: register_globalsとは – はてなダイアリー
(例によってよく解らないまま書いてます)