安全なphp.ini設定

あまり設定することがないのでメモ的に残しておきます。設定するのに必要な項目です。まあだいたいなところですけど、自己確認用ですから。。。

いろいろなところからいいとこ取りで設定してある物をご紹介いたします。
環境によって使い分けたほうがよさそうですね。

基本的にあまり構うところ無いのですが、特にココは気をつけたいところだけ載せておきます。

php.iniの設定も一苦労です。


スポンサーリンク

//Webアプリケーションで使用する文字エンコーディングを必ず指定。
default_charset = UTF-8

//すべてUTF-8で統一の場合

mbstring.language = Japanese

output_handler =

mbstring.internal_encoding = UTF-8

mbstring.http_input = pass

mbstring.http_output = pass

mbstring.encoding_translation = Off

mbstring.detect_order = auto

//内部エンコーディングUTF-8入出力Shift_Jis

output_handler = mb_output_handler

mbstring.language = Japanese

mbstring.internal_encoding = UTF-8

mbstring.http_input = SJIS

mbstring.http_output = SJIS

mbstring.encoding_translation = On

mbstring.substitute_character = “?”

//5.2以降ならOnでも可それ以外ならOff
allow_url_fopen = Off

//5.2で追加リモートファイルのinclude,require許可
allow_url_include = Off

//タイムゾーン設定
date.timezone = “Asia/Tokyo”

//HTTPヘッダーに追加されるX-Powered By :PHP/5.3.0
expose_php = Off

//アップロード機能使わないのであればOff
file_uploads = Off

//エラーをログに出力するかどうかの設定
log_errors = On

//上記設定Onの場合のエラーログ場所指定
error_log = “/home/user/public_html/php_error.log”

//開発用
error_reporting = E_ALL | E_STRICT
//アップ用
error_reporting = E_ALL & ~E_DEPRECATED

//エラーをブラウザに出力するかどうか開発以外はOff
display_errors = Off

//PHPによるアクセスを特定のディレクトリ以下に制限、通常は設定無し、ディレクトリトラバーサル対策としては有効
open_basedir = /home/user/public_html/:/home_user/php_data/

//特定の関数を無効にするための設定
disable_functions = phpinfo, eval, system, exec, passthru, popen

//PHPの拡張機能を動的にロードする機能、PHP5.3.2では非推奨で将来的に削除される可能性
enable_dl = Off

//共用サーバーではOnにすることでセキュリティを高める事ができます。セーフモードにすることにより制限を受けるか無効となる関数があります。将来的には削除
safe_mode = On

//意図しない変数の初期化が行われる可能性がありセキュリティ上の問題が多いのでOff将来的に廃止
register_globals = Off

//シングルクオート、ダブルクオート、バックスラッシュに対して自動的にバックスラッシュでエスケープ処理します。将来的に廃止
magic_quotes_gpc = Off

//将来的に廃止
magic_quotes_runtime = Off

//PHPスクリプトの最大実行時間を秒で指定。指定した時間以上経つと強制終了。この値が長いとDoS攻撃のリスクが高まります。
max_execution_time = 60

//GET,POST,ファイルアップロードの入力データ解析する最大時間。この値が長いとDoS攻撃のリスクが高まります。
max_input_time = 60

//PHPが使用可能なメモリの上限通常は32MBあれば動作します。
memory_limit = 128M

//PHP4.2.3とそれ以前のセッション変数初期化不具合による動作、将来的には削除される可能性。
session.bug_compat_42 = Off

//PHP4.3.0以上で上記の設定を有効としていた場合に警告を出力する設定。
session.bug_compat_warn = Off

//セッションIDを生成するハッシュ関数の指定(1=SHA1,0=MD5)
session.hash_function = 1

//ホスト名を共有している場合
//http://sample.com/mayname/
//http://sample.com/yourname/
session.cookie_path = /myname/

//前ページSSLの場合
session.cookie_secure = On

//クライアント側のセッションID管理にクッキーを使用するか指定するための設定
session.use_cookies = 1

//上記の管理にクッキーのみ使用するか指定するための設定
session.use_only_cookies = 1

//HTTPを通してのみに限定させる設定。スクリプト挿入攻撃、クロスサイトスクリプティングによるセッションID漏洩を防ぐ
session.cookie_httponly = On

//クッキーの有効期限はブラウザを閉じるまで有効
session.cookie_lifetime = 0

//セッションIDの管理にクッキーが使われていない場合にセッションIDをURLなどに自動付与するか指定する設定
session.use_trans_sid = 0

//セッションデータの保存及び取得ハンドラがファイルハンドラの場合にセッションファイルを保存する場所の指定
session.save_path = “/home/user/temp/”

//セッションの自動スタート設定
session.auto_start = 0

//古いセッションデータがゴミになるまでの時間24分
session.gc_maxlifetime = 1440

//上記のゴミが100分の1の確率で削除される
session.gc_divisor = 100
session.gc_probability = 1

//存在すれば/dev/urandom
session.entropy_file = /dev/urandom

//上記設定するなら下記も設定する。
session.entropy_length = 32

// curl関数を利用するため;を外す
extension=php_curl.dll

// openssl関数を利用するため;を外す
extension=php_openssl.dll

Xdebugの設定はこちらから

1件のコメント

  1. PHP 5.5.11現在、php.iniでdisable_functionsにevalを設定しても有効ではないようです。
    evalやechoは実際には関数ではなく、language constructであるためとの事…。

コメントを残す

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