セキュリティ
実行ユーザー
実行ユーザーは、権限の低いユーザーに設定することを推奨します。例えば、nginxの実行ユーザーと同じにします。実行ユーザーは config/server.php
の user
と group
で設定します。似たようなカスタムプロセスのユーザーは、config/process.php
の user
と group
で指定します。monitorプロセスには高い権限が必要なため、実行ユーザーを設定しないでください。
コントローラーの仕様
controller
ディレクトリまたはそのサブディレクトリには、コントローラーファイルのみを配置し、その他のクラスファイルを配置しないでください。そうでない場合、コントローラーサフィックスを無効にしていると、クラスファイルが不正にURLからアクセスされ、予測できない結果を招く可能性があります。例えば app/controller/model/User.php
は実際にはModelクラスですが、誤ってcontroller
ディレクトリに配置されている場合、コントローラーサフィックスを無効にしていると、ユーザーは /model/user/xxx
のようにして User.php
内の任意のメソッドにアクセスできてしまいます。このような事態を完全に排除するために、コントローラーサフィックスを使用して、どれがコントロールファイルであるかを明確に示すことを強く推奨します。
XSS フィルタリング
汎用性を考慮して、webmanはリクエストに対してXSSエスケープを行っていません。webmanは、データベースに格納する前ではなく、レンダリング時にXSSエスケープを行うことを強く推奨します。また、twig、blade、think-templateなどのテンプレートは自動的にXSSエスケープを実行するため、手動でエスケープする必要はなく、非常に便利です。
ヒント
データベースに格納する前にXSSエスケープを行うと、いくつかのアプリケーションプラグインとの互換性問題を引き起こす可能性があります。
SQLインジェクションを防ぐ
SQLインジェクションを防ぐために、できるだけORMを使用してください。例えば、illuminate/database や think-orm を使用し、自分でSQLを組み立てないようにします。
nginxプロキシ
アプリケーションを外部ユーザーに公開する必要がある場合、webmanの前にnginxプロキシを追加することを強く推奨します。これにより、一部の不正なHTTPリクエストをフィルタリングし、安全性を高めることができます。詳しくはnginxプロキシを参照してください。