CakePHP

CakePHP2.xでデータのサニタイズ(clean)をする方法。

2015/01/11

CakePHP1.3でもお世話になったサニタイズですが、2.xで行う方法です。
ほぼ、CakeBook2のコピペです。

CakePHPのバージョンは2.3.6を使っています。

サニタイズライブラリの読み込み

Sanitizeのコアライブラリを読み込むには、次のようにします。 (例:コントローラの定義の前に設置する場合)
一度このようにすれば、静的にSanitizeクラスを呼び出すことが出来ます。

書式

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の使用例は、次のとおりです。

[tgAmazonItemLookup asin="4101240582" related="1"]

-CakePHP
-, , ,