2012-04-24 10 views
3

私はSymfony 2 phpフレームワークを使用しています。このフレームワークには、開発、生産、テストという2つの異なる使用環境があります。 app.phpフロントコントローラは本番環境にアクセスし、app_dev.phpフロントコントローラは開発環境にアクセスします。 Symfonyに精通している人は、開発環境を開発者に限定する最良の方法は何かアドバイスできますか? Webアプリケーションの開発版を自分のサイトのユーザーが見ることができないようにするには、運用環境を使用するように制限する必要があります。symfony 2 app.php対app_dev.php

答えて

10

まあまあ、標準の配布では、top of the dev controllerにIPベースのガードチェックがあります。

// This check prevents access to debug front controllers that are deployed by accident to production servers. 
// Feel free to remove this, extend it, or make something more sophisticated. 
if (isset($_SERVER['HTTP_CLIENT_IP']) 
    || isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    || !in_array(@$_SERVER['REMOTE_ADDR'], array(
     '127.0.0.1', 
     '::1', 
    )) 
) { 
    header('HTTP/1.0 403 Forbidden'); 
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 
} 

ただし、コメントに示されているように、あなたはそのアプローチに従っていません。たとえば、Apacheを実行している場合、開発者とテストコントローラにはadd basic HTTP Authenticationを指定できます。

+1

また、単にapp_dev.phpファイルを運用サーバーにアップロードしないこともオプションです。 – Sgoettschkes

+0

例:Capifonyは、プロダクションサーバへの奇妙な環境の漏洩を防ぐために、展開時にすべてのapp _ *。phpファイルを削除します。 –

+1

黒い帽子のハッカーは、そのコントローラのチェックをバイパスするために必要な$ _SERVER設定をすべて生成できます。ほとんどの怠惰な攻撃者をフィルタリングしますが、サーバーから開発コンソールを実行する必要がある場合は、最低限の基本認証が必要です。 **ベスト**のアイデアは、それがサーバに属しておらず、通常の配備のためにそのプラクティスに固執していると仮定することです。 –

関連する問題