phpでセキュリティーの基礎

バグ

  1. 2 . 2250738585072011E-308をdubleにキャストすると無限ループする(32bitのみ)。最新版では修正済み

phpのこれだけはやっておきたい設定

  1. safe_mode = off・・・完全に他人のファイルを見えなくすることはできない。
  2. register_globals = off・・・グローバル変数の初期値を外部からいじり放題。
  3. magic_quotes_gpr = off・・・必要がないものまでエスケープして、漏れもある。
  4. allow_url_include = off・・・dnsの改斬で任意のプログラムを読み込まされる。
  5. allow_url_fopen = off・・・dnsの改斬で任意のプログラムを読み込まされる。
  6. error_reporting = E_ALL・・・できるだけエラーを出すようにする。

使えない関数は代わりのものを使う

  1. 「strip_tags」ではなく「htmlspecialchars」・・・誤動作させる方法がある。ENT_QUOTESと文字コードのパラメーターもしっかり入れる。
  2. 「addslashes」ではなく「mysql_real_escape_string」・・・rdbsの挙動によって惰弱性につながる。
  3. shift-jisは使わない。使うときはviewでエンコードする。
  4. 正規表現は「preg」を使う。マルチバイトが使えないものは使わない。
  5. 「mb_」系があるものはそちらを使う。マルチバイトの惰弱性を突かれないために。
  6. sql文はなるべく、文字列結合を使わない。できればプレースホルダを使う。どうしても使う場合は「mysql_real_escape_string」。

携帯サイトで注意

  1. できるだけcookieを使う。
  2. セッションの有効期限は短くする。
  3. 外部サイトに飛ぶときは、セッションを消してから。

基本的なこと

  1. 管理画面はbasic認証とIP制限をかける。
  2. display_error = off・・・エラーを見せない。

すでにやっていたことも多かったけど、気にしていながらそのまま使っていた関数とかもあった。

コメントを残す

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