サーバーサイド
Grav をサーバーサイドで防御するには、サーバーと PHP に適切なオプションを使用します。
このガイドでは、 Grav が実行されるサーバーの設定方法や、理想的な条件について解説するのではなく、 Grav を安全にするテクニックやベストプラクティスを説明し、さらに、サーバーを安全にする方法について詳しく書かれたリソースへのリンクを紹介します。
これは、本番サーバーに関するガイドであり、ローカル環境は対象にしていません。また、初心者ユーザーにはおすすめしない内容です
Grav とデフォルトの config
Grav の利用に際して、利用中のサーバーに適した、ディレクトリ特有の最新の構成を、常に使ってください。
これらの設定は、 GitHub リポジトリ にあります。
さらに、新しいセキュリティパッチが実装されるたびに、 Grav を定期アップデートしてください - 詳細については、 CHANGELOG を参照してください。
PHP の config
PHP の設定を変更する前に、ほとんどのレンタルサーバーでは、すでに適切で安全なデフォルト設定がセットアップされている可能性が高いことを留意してください。
また、多くの場合、ユーザーが自身で設定を編集することを許可していません。
あらゆる設定を無効化したり、変更したりする前に、 PHP 拡張を含めた Grav のシステム要件 と、設定変更がそれら要件に与える影響について、詳しくなっておく必要があります。
一般的に、 PHP の設定は、 php.ini により変更します。
このファイルの場所は、 php --ini コマンドによりコマンドラインから調べられる他、直接コマンドラインにアクセスできない場合は、 phpinfo.php というファイルを web サーバーの公開ルートフォルダに作成し、 <?php phpinfo(); ?> と書き、そしてブラウザで開くことでできます。
ファイルパスは、 “Loaded Configuration File” の下に書かれています。
見つかったら、 phpinfo.php ファイルは削除してください。
いくつかの一般的な推奨事項:
- 常に PHP バージョンは最新を保つこと : PHP の supported version を使って、 active かつ stable のバージョンを選んでください。たとえば、 PHP 5.6 と PHP 7.0 は、 2018年冬まででセキュリティ Fix を終えます。 PHP 7.1 は、 PHP 7.2 と同様に active サポートの状況です。(訳注:2026年現在は、8.4 と 8.5 が active support でした。)
- エラーを画面表示させず、 PHP バージョンを公開しない: PHP.earth 記事
- Grav での PHP 実行には、権限の制限された別ユーザーを利用: パーミッションに関するドキュメント
- 高度な PHP 防衛 のため Suhosin を利用
web サーバーの config
一般的な web サーバーもしくは HTTP サーバーソフトウェアとして、 Nginx や、 Apache があり、よりモダンな代替手段として LiteSpeed や、 Caddy サーバーもあります。
前述の web サーバー設定 には、 Grav に必要なデフォルト設定が含まれますが、サーバー設定次第で、さらに安全にすることも可能です。
いくつかの関係資料はこちら:
- DigitalOcean の How To Secure Nginx および nixCraft の Nginx WebServer Best Security Practices
- Geek Flare の Apache Web Server Hardening & Security Guide および Tecmint の Apache Web Server Security and Hardening Tips
- Bobcares の Ways of improving security in Litespeed
サーバーの config
常にオペレーティングシステム(OS)は最新に してください。
OS は、 PHP 以上に悪用や侵入の標的になるため、できるだけ頻繁にアップデートするべきです。
また、 その他のソフトウェアも最新に保つ 必要があります:インストールされているのは、 OS, PHP, Grav だけではありません。
他のソフトウェアパッケージもまた、リスク要因であり、頻繁にアップデートするべきです。
サイトへのユーザー接続を守るため、 SSL 認証の HTTPS を有効化すべきです。
これは、サーバーとブラウザ間のすべての通信をプライベートかつ暗号化してくれます。
無料の認証とサービスは、たとえば Let’s Encrypt や CloudFlare で利用できます。
もしあなたのサーバーが Linux 上で動いているなら、 Security Enhanced Linux を有効化してください。
SELinux は、通常デフォルトで有効になっており、 その価値があります
システム管理者向けのさらなる推奨事項は、 nixCraft にあります。