セキュリティ
実行ユーザー
実行ユーザーは、nginxの実行ユーザーと同じような低い権限のユーザーに設定することが推奨されます。実行ユーザーはconfig/server.php
のuser
およびgroup
で設定します。
同様に、カスタムプロセスのユーザーはconfig/process.php
のuser
およびgroup
で指定されます。
監視プロセスには高い権限が必要なため、実行ユーザーを設定しないでください。
コントローラーの規約
controller
ディレクトリまたはそのサブディレクトリには、コントローラーファイルのみを配置することができます。それ以外のクラスファイルを配置することは禁止されており、そうしないとコントローラーの拡張子が有効になっていない場合、URLによる不正なアクセスが可能となり、予期せぬ結果をもたらす可能性があります。
例えば、app/controller/model/User.php
は実際にはモデルクラスですが、誤ってcontroller
ディレクトリに配置されている場合、コントローラーの拡張子が有効になっていない場合、ユーザーは/model/user/xxx
のようなURLでUser.php
内の任意のメソッドにアクセスできる可能性があります。
このような状況を完全に排除するために、どのファイルがコントローラーファイルであるかを明示的に示すために、コントローラーの拡張子の使用を強くお勧めいたします。
XSSフィルタリング
汎用性を考慮して、webmanはリクエストにXSSエスケープを適用しません。
webmanはXSSエスケープはレンダリング時に行うことを強く推奨しており、データベースに入れる前にエスケープを行うことは推奨していません。
また、twig、blade、think-tmplateなどのテンプレートは自動的にXSSエスケープを実行し、手動でエスケープする必要はありません。
注意
データベースに入れる前にXSSエスケープを行うと、いくつかのアプリケーションプラグインの非互換性の問題が発生する可能性が高いです。
SQLインジェクションの防止
SQLインジェクションを防ぐために、可能な限りORM(例:illuminate/database、think-orm)を使用し、自分でSQLを組み立てることを避けてください。
nginxプロキシ
アプリケーションを外部ユーザーに公開する必要がある場合は、webmanの前にnginxプロキシを設置することを強くお勧めします。これにより、いくつかの不正なHTTPリクエストをフィルタリングし、セキュリティを向上させることができます。詳細については、nginxプロキシを参照してください。