バグ
- 2 . 2250738585072011E-308をdubleにキャストすると無限ループする(32bitのみ)。最新版では修正済み
phpのこれだけはやっておきたい設定
- safe_mode = off・・・完全に他人のファイルを見えなくすることはできない。
- register_globals = off・・・グローバル変数の初期値を外部からいじり放題。
- magic_quotes_gpr = off・・・必要がないものまでエスケープして、漏れもある。
- allow_url_include = off・・・dnsの改斬で任意のプログラムを読み込まされる。
- allow_url_fopen = off・・・dnsの改斬で任意のプログラムを読み込まされる。
- error_reporting = E_ALL・・・できるだけエラーを出すようにする。
使えない関数は代わりのものを使う
- 「strip_tags」ではなく「htmlspecialchars」・・・誤動作させる方法がある。ENT_QUOTESと文字コードのパラメーターもしっかり入れる。
- 「addslashes」ではなく「mysql_real_escape_string」・・・rdbsの挙動によって惰弱性につながる。
- shift-jisは使わない。使うときはviewでエンコードする。
- 正規表現は「preg」を使う。マルチバイトが使えないものは使わない。
- 「mb_」系があるものはそちらを使う。マルチバイトの惰弱性を突かれないために。
- sql文はなるべく、文字列結合を使わない。できればプレースホルダを使う。どうしても使う場合は「mysql_real_escape_string」。
携帯サイトで注意
- できるだけcookieを使う。
- セッションの有効期限は短くする。
- 外部サイトに飛ぶときは、セッションを消してから。
基本的なこと
- 管理画面はbasic認証とIP制限をかける。
- display_error = off・・・エラーを見せない。
すでにやっていたことも多かったけど、気にしていながらそのまま使っていた関数とかもあった。