CakePHP2.xでデータのサニタイズ(clean)をする方法。
2015/01/11
CakePHP1.3でもお世話になったサニタイズですが、2.xで行う方法です。
ほぼ、CakeBook2のコピペです。
CakePHPのバージョンは2.3.6を使っています。
サニタイズライブラリの読み込み
Sanitizeのコアライブラリを読み込むには、次のようにします。 (例:コントローラの定義の前に設置する場合)
一度このようにすれば、静的にSanitizeクラスを呼び出すことが出来ます。
1 2 3 4 5 6 |
App::uses('Sanitize', 'Utility'); class MyController extends AppController { ... ... } |
書式
Sanitize::clean($data, $options);
パラメタ:
$data (mixed) - サニタイズを行うデータ
$options (mixed) - サニタイズのオプション。
この関数は、配列全体に処理を行うための、実用的で多目的なクリーナーです。たとえば、$this->data 全体にサニタイズを行うといった利用法があります。この関数は与えられた配列(または文字列)をクリーンにし、それを返します。このクリーンにする処理は、配列の全ての要素に再帰的に行われます。
- 「0xCA」を含むおかしなスペースを、標準的な半角スペースに置換します
- SQL文のセキュリティ向上のため、特殊な文字や復帰文字の削除をダブルチェックする。
- 前述した機能を用い、SQL文で用いるため、データにスラッシュを追加する。
- ユーザが入力したバックスラッシュを、信頼できるバックスラッシュに置き換える。
オプション
$options には文字列と配列のいずれも使用可能です。
文字列を渡す場合は、データベースの接続名を指定してください。
配列を渡す場合は、次のオプションを併せて使用します。
connection(デフォルト:default)
使用するデータソースコネクション名
例:array('connection' = 'mydb')
odd_spaces(デフォルト:true)
「0xCA」を含むおかしなスペースを、標準的な半角スペースに置換する
例:array('odd_spaces' = true)
encode(デフォルト:true)
htmlの特殊文字をエンティティ化するかどうか。trueならエンティティ化。falseならなにもしない
例:array('remove_html' = true)
dollar(デフォルト:true)
ドルマークをエスケープする
例:array('dollar' = true)
carriage(デフォルト:true)
キャリッジリターンを取り除く
例:array('carriage' = true)
unicode(デフォルト:true)
ユニコードをエスケープする。
例:array('unicode' = true)
escape(デフォルト:true)
Sanitizeクラスのescapeメソッドを使用する。
例:array('escape' = true)
backslash(デフォルト:true)
ユーザが入力したバックスラッシュを、信頼できるバックスラッシュに置き換える。
例:array('backslash' = true)
remove_html(デフォルト:false)
htmlの特殊文字を取り除くかどうか。trueなら取り除く。
例:array('remove_html' = true)
注:(必ずエンコードパラメータも設定して下さい
書き方
cleanの使用例は、次のとおりです。
1 |
$this->data = Sanitize::clean($this->data, array('encode' => false)); |
[tgAmazonItemLookup asin="4101240582" related="1"]