安全なサーバーにCakePHPアプリケーションをデプロイする際に問題が発生します。管理者がmod_security2をインストールしましたが、フォームからPOSTデータを検証しようとするとエラーが発生します。
これが問題であるかどうかは正確にはわかりませんが、mod_securityは、フォームヘルパーが生成するフィールド名で使用される角かっこを強く嫌っていると思います。フィールド名は常に次の形式です。
データ[テーブル名][フィールド名]
これらの名前を使用するフォームを送信すると、apacheログに次のように表示されます(正気のために改行が追加されました)。
[Mon Jun 27 11:14:48 2011] [error] [client 10.255.144.105]
ModSecurity: Warning. Operator LT matched 20 at TX:inbound_anomaly_score.
[file "/etc/httpd/modsecurity.d/base_rules/modsecurity_crs_60_correlation.conf"]
[line "31"] [msg "Inbound Anomaly Score (Total Inbound Score: 8, SQLi=, XSS=):
900030-Detects common XSS concatenation patterns 1/2"] [hostname "falcon.tamucc.edu"]
[uri "/~jgarcia4/index.php"] [unique_id "TgiseEBHUhAAAGHUhl0AAAAb"]
XSSインジェクションルールをトリガーしていることがわかりましたが、フィールド名の「][」は気に入らないと思います。これは、空のフォームを送信するとき、および完全に記入されたフォームを送信するときにも発生します。この場合、PHPが呼び出されていないことを確認しました。
mod_securityをオフにすることはできません。これは、私が制御するサーバーではないため、処理に行き詰まっています。論理的な「修正」は、フィールド名に[]角かっこを使用しないことのようですが、フォームハンドラーにそのように指示する方法がわかりません。すべてのチュートリアルは、デフォルトの命名規則で問題なく表示されます。
フォームハンドラーが入力要素のフィールド名を処理する方法をグローバルに変更する方法はありますか?それを除いて、個々の要素ごとにそれをオーバーライドする方法はありますか?ケーキのコアエンジンが結果をどのように処理するかは完全にはわかりません。モデルがそれを特定の形式に拡張すると、行き詰まる可能性があります。