0

私はこれを使用してデータをデータベースに保存していました。

$this->request->data['Post']['body'] = utf8_decode($this->request->data['Post']['body']);

そのように、アクセント付きのようないくつかの「特殊」文字をDBに保存できます:áéíóú問題なく。

次に、HTMLとSQLインジェクションからアプリケーションを保護しようとし、次のようにサニタイズを使用しました。

$this->request->data['Post']['body'] = Sanitize::html($this->request->data['Post']['body']);

これで、私のテキストは次のようにデータベースに保存されます。

á = á
é = é
í = í ...etc

そして、私はそれを望んでいません。また、DBの私のフィールドには最大文字数があり、これは役に立ちません。

また、encode = true、encode = false、またはencode ='utf8'を使用してsanitizeでオプションparamを使用しようとしましたが、何も変更されていないようです。

私は何をすべきか?ありがとう。

更新1

また、コントローラーでhtmlentities関数を使用しようとしましたが、これがデータベースに挿入されます。

Ã
4

1 に答える 1

2

Cakeを使用してデータを保存している場合(つまり、save()notを使用してquery()いる場合)、SQLインジェクションから保護されます。値を自動的にエスケープします。

ドキュメントに記載されているように、文字を、、Sanitize::html()などのHTMLエンティティに変換します。特にHTMLエンティティが必要な場合を除いて、おそらく使用しないでください。アプリとテーブルに適切なエンコーディングがあれば、Cakeはアクセントをデータベースに適切に保存します。>á

于 2012-04-16T16:45:09.900 に答える