セキュアプログラミングにて注意すべきこと

【この記事の所要時間 : 約 3 分

PHP セキュアプログラミング」にて、PHPで最低限しておかなければならないセキュリティ対策について書いたけど、PHPカンファレンス2006の記事で面白そうなものを発見した。
PHPで書かれた実際のアプリケーションに潜む危険なコード

PHPのコードを埋め込むために「<?」(ショートタグという)を利用していたのも問題だという。ショートタグはデフォルトでは有効だが,オンオフを切り替えられる。オフに設定していたサーバーでは,ソースコードが見えてしまうことになる。ショートタグではなく「<?PHP」というタグを使うのが鉄則だ。

これは、「環境が異なるサーバーへのアプリケーション移行」にて引っかかったショートタグ問題。

ホーム・ディレクトリを設定する部分に,環境変数によって設定されるCGI変数である「HTTP_HOST」を利用しているのが問題だという。 HTTP_HOSTは(Webサーバーにもよるが)好き勝手な文字列を設定できてしまうためだ。「PHP_SELF」というサーバー変数を使っているのも問題。PHP_SELFにはPATH_INFOも含まれ,この部分に任意の文字列を入れることができる。JavaScriptのコードを入れることもできる。

PHP_SELF はたまに使うので注意しておこうと思った。

「.inc」という拡張子を使っているファイルがあるのも問題だという。サーバーの設定によってはPHPとして実行されない可能性があるからだ。「拡張子は『.php』に統一すべき」

自分で作る場合、拡張子incでつくることはないが、incで書かれたファイルを読み込むというソースコードにはよく出会うので、頭に入れておく。拡張子iniのモジュールがあると、ソースコード流出のリスクが増える。ソースコード流出の主な原因は以下のようなものである。
 ・インクルードするファイルに .inc ファイル拡張子を利用
 ・ドキュメントルートにインクルードファイルを格納
 ・Apacheが .inc ファイルのリソース型を決められない
 ・Apacheのリソース型としてDefaultTypeがtext/plainになっている
回避策は、カンタンで、すべてのインクルードファイルをドキュメントルートの外に格納すること。
めんどくさがらずに基本を徹底するということが重要。
いつまでアップされているかわかりませんが、資料は以下。
「危険なコード」の講演資料ダウンロード
以下、参考までに。
セッションハイジャック と session_regenerate_id( )関数

~短期集中講座~ 土日でわかる PHPプログラミング教室 環境づくりからWebアプリが動くまでの2日間コース
フロイデ株式会社 吉谷 愛
SBクリエイティブ
売り上げランキング: 8,538
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です