ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

I Love PHPコミュのPHPプログラマがおかしがちなミスTOP10

  • mixiチェック
  • このエントリーをはてなブックマークに追加
「PHPプログラマがおかしがちなミスTOP10」、という記事があったので紹介。
PHP初心者だとこういうミスがよくありますね。ということで今年からPHPをはじめようと思っている人には気をつけてほしいリストです。

1.生でクエリを出力しない
  echo $_GET['username'];
  ↓
  echo htmlspecialchars($_GET['username'], ENT_QUOTES);

  やらないとクロスサイトスクリプティングされます。
2.SQLクエリに$_GET,$_POST,$_REQUESTの値を直接含めない
  $sql = "select * from table where id=".$_GET["id"];
  ↓
  $sql = "select * from table where id=?"; (プレースホルダを使う)
  やらないとSQLインジェクションされます。
3.header, session_start, setcookieを何か出力した後に実行
  悪い例)
  echo "HOGE";
  header("Location:/html/");
  ↓
  // echo "HOGE";
  header("Location:/html/");
  出力処理を先に行うとちゃんとheader関数が実行されません。session_start, setcookieも同様。
  何かの出力処理の前に実行したい場合は出力をバッファリングしておいて、header呼び出しの後にバッファを出力する。
4.ユーザクエリを元にincludeしない
  include($_GET["filename"]);
  そもそもこういったコーディングは危険なので避けるべきです。サーバにあるファイルが覗かれてしまいます。
  php.iniのopen_basedirによる制限などもしておいた方がよいですね
5.php.iniのmagic_quotes設定による自動エスケープの罠
  このオプション設定によって ' , " , , NUL が自動エスケープされますが、それによってデータにエスケープ文字がはいってしまうという問題がありますね。
  addslashes関数による2重エスケープなんかも起こることがあります。
  マニュアルに、「マジッククオートは、PHPスクリプトに入力されるデータを 自動的にエスケープする機能です。 コードでは、マジッククオートをオフにして 実行する際必要な時にデータをエスケープすることが望まれます。」とあるので、それに従った方が良さそうです。
  オープンソースなプログラムなんかでは、phpの設定は関係なく、どのサーバでもちゃんと動くようにget_magic_quotes_gpc関数によって設定を調べてstripslashesで取ったりする必要がありますね。
※なぜかMTでエラーが出るので半角$を全角にしています。読み替えてください

これらに限らず、WEBプログラミングする際は、基本的なセキュリティの知識が必要なので「IPA ISEC」なんかで学べます。

その他、開発スタイルに関する推奨

1.メモ帳などの使いにくいエディタはやめる
  構文エラーを避けるためよいエディタを探して開発を効率化しよう、という指摘
2.オブジェクト指向しよう
  メンテナンスしづらくなるのでオブジェクト指向を知らない場合は学びましょうという指摘。
  これはPHPに限りませんね。(PHPオブジェクト指向)
3.フレームワークを使わない開発
  規模やプログラムによってはフレームワークを使わない方が早いですね。
  なんでもフレームワークで作るという発想はやめた方がよいですが、便利な部分では使ったほうがよいと思います。
4.標準関数をもっと知ろう
  便利な関数がいっぱいあるので、知っていると同じものを何回も作らなくて便利です。
  この機能を作ったけど後から標準関数であったのか、と気づくことはphpをやっていてよくあることです:-)
5.古いバージョンのPHPは使わない
  頻繁にセキュリティアップデートなどが行われているので最新のバージョンを使うようにしましょう。
  といってもPHP4とPHP5の最新バージョンは違うので注意が必要です。
PHPを知っている人には何を今更といわれそうなことを書いていますが、初心者の方には有益だと思われるので敢えてまとめてみました。

コメント(0)

mixiユーザー
ログインしてコメントしよう!

I Love PHP 更新情報

I Love PHPのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。