2011-06-28 5 views
2

セキュリティで保護されたサーバにCakePHPアプリケーションを配備する際に問題があります。管理者がmod_security2をインストールしました。フォームから自分のPOSTデータを検証しようとするとエラーが発生します。CakePHPのフォームヘルパーが別の命名体系を使用するように指示できますか?

これが問題になるのではないかと思いますが、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をオフにすることはできません。私が制御するサーバーではないので、私はそれを扱っていません。論理的な "修正"のように、フィールド名に[]の括弧を使用しないように思われますが、フォームハンドラに指示する方法はわかりません。すべてのチュートリアルは、デフォルトの命名規則でうまくいくようです。

フォームハンドラが入力要素のフィールド名を扱う方法をグローバルに変更する方法はありますか?それは、個々の要素ごとにそれを上書きする方法があるのですか?ケーキのコアエンジンがどのように結果を処理するのかが完全にはわかりません。モデルが特定のフォーマットになるように表現すれば、私は固執するかもしれません。

+0

とレコードのために、私は、mod_securityのが恐ろしい醜態だと思うし、その入力スキャンからの利益を見ません。少なくともこのサーバーに設定された方法ではありません。*ロギング*そのようなスキャンは意味をなさないかもしれませんが、偽陽性のすべてについてアプリを壊滅させるのは残酷です。 –

答えて

2

私はこれを行う方法が正確ではありません。次のコードは恐ろしいことに失敗するか、FormHelperがまったく動作しなくなる可能性があります。 Cakeのモデルバリデーションを使用する場合は、適切な配列構造を持つようにフォームデータを操作する必要があります。あなたが試みることができる

$this->Form->input('Model.field', array('name' => 'yourSafeName')); 
+0

これは便利です。 save()メソッドを使用する前に元のフォーマットに再解析して調整できるフォーマットを用意しなければならないかもしれませんが、これが始まりです。 –

関連する問題