Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

vagrantその19-11 cakephp入門をやってみる(Formその2) UtilityパッケージのSanitizeクラスを使う

参考にさせて頂いたページ

フォーム送信とForm Helper(2/5):初心者のためのCakePHP2.0 プログラミング入門

前回記述した SampleController.php を編集

前回記述したSampleController.phpを修正していく。

前回は使わなかったけど、

//App::uses( クラス名 , パッケージ名 );
App::uses('AppController', 'Controller');
App::uses('Sanitize', 'Utility');

が既に書いてある。

今回こそはSanitizeを利用するので、UtilityパッケージのSanitizeクラスを使用する記述が必要。

編集箇所としては

$this -> set("text1", $text1);

だったところを

  $this -> set("text1", Sanitize::stripAll($text1));

に変更する。

テキストフォームに入力された文字列は、出力する前にサニタイズする事で、悪意のあるプログラムなんかを無効にできるらしい。

テキストフォームから

<div>test</div>

とか

<?php echo('<div>test</div>'); ?>

とか

<?php echo('test'); ?>

とか

<script>alert('test');</script>

とか入力してみたけど、あんまりその効果のほどはわからないので、また後日検索するなりしないとなー。

とりあえずjsのalertは実行されなかった。

ここまでの SampleController.php の記述内容

参考ページにならって以下の通り

<?php
App::uses('AppController', 'Controller');
App::uses('Sanitize', 'Utility');

class SampleController extends AppController {

  public function index() {}

  public function form() {
    $text1 = $this -> data["text1"];
    $check1 = isset($this -> data["check1"]) ? 
      "On" : "Off";
    $radio1 = $this -> data["radio1"];
    $this -> set("text1", Sanitize::stripAll($text1)); //★
    $this -> set("check1", $check1);
    $this -> set("radio1", $radio1);
  }

}

今回はここまで。