Standing on the Shoulder of Linus

Home / 2014 / 9月 / 08 / WordPressセキュリティを考える会第6回開催しました。

WordPressセキュリティを考える会第6回開催しました。

WordPressセキュリティを考える会第6回開催しました.
ネタがWordPressとjQueryの連携、ということもあり、開催前にスライドが2000view行く等、注目されたイベントになりました。

WordPress(PHP) からjQuery(JavaScript)に動的に値を渡す方法 from Fumito Mizuno

スライドでは、HTML5のカスタムデータ属性、wp_localize_script、esc_jsの3通りを紹介しました。スライドの補足として、JSONについて記載したいと思います。

JSONについて

JavaScript Object Notation(JSON)は、テキストベースのデータフォーマットです。プログラム間でデータを受け渡しするとき等でデータをいったん出力しなければならないときに、JSON形式で出力することがあります。

wp_localize_scriptを使う方法は、WordPressからJSONを出力する、そのJSONをJavaScriptのプログラムから読み取る、という仕組みです。

テキストデータなので、自分でJSONを組み立てることも理論上は可能です。しかし自分で組み立てると構文のミス等の危険が高まるので、通常はプログラム言語に用意されている方法を利用します。フレームワークやライブラリを使っている場合はそれらのお作法で作ると良いでしょう。

JSONのHTMLエスケープ

json_encode のHTMLエスケープには注意が必要です。会でも取り上げましたが、wp_localize_scriptの生成するJSONはHTMLエスケープされないです。

もちろん、この事自体は致命傷では有りません。JSで出力する場合に、きちんと注意する必要がある、ということですから。

PHPフレームワークとJSON

PHPフレームワークではどうなっているでしょうか。

FuelPHP1.7.2ではデフォルトでHTMLエスケープ済みのJSONを生成します。

fuel17

<?php

class Controller_Jsonsample extends Controller_Rest
{
    public function action_index() 
    {
        $array = array('data' => '<b>abc</b>');
        return $array;
    }

}

CakePHP2.4.10ではデフォルトではHTMLエスケープされないJSONを生成します。

cake24

<?php

class JsonsampleController extends AppController {
    public function index() {
        $this->viewClass = 'Json';
        $this->set('data', '<b>abc</b>');
        $this->set('_serialize', array('data'));
    }
}

デフォルトでHTMLエスケープする/しないを確認しておかないといけませんね。

セキュリティをもっと知りたい方へ

連載書籍 WordPress セキュリティニュースでは、今回の勉強会で紹介したHTML5のカスタムデータ属性を使う方法、wp_localize_scriptを使う方法、について解説しています。興味のある方はお読みいただけると嬉しいです。

※ WordPress(PHP) からjQuery(JavaScript)に動的に値を渡す方法を言い値書店で販売開始しました。 購入者はデモで使ったテーマ/攻撃コードがダウンロード可能です。サンプルテーマでは、bxsliderを利用しました。

関連

Posted in WordPress | Tagged jquery, JSON, エスケープ
← 台東区上野シェアオフィス「いいオフィス」に開業初日に訪問しました。 Drupalビジネスコンソーシアム第1回に参加しました。 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.