**googlegadgets.inc.php [#d02cee78]
|RIGHT:100|LEFT:360|c
|~サマリ|google gadget for your website の埋め込み|
|~リビジョン|0.0.1|
|~リビジョン|0.3|
|~対応バージョン|1.4.x|
|~投稿者|[[hnagoya@gmail.com]]|
|~投稿日|&new{2006-10-06 (金) 14:18:28};|
google gadget を特定のページに埋め込みたかったのででっちあげてみたのですが、ようは生のHTMLコードをそのまま吐いているだけなので、引数チェックこれでいいのかな…セキュリティ面がよくわかりません。

[[Google Gadgets For Your Webpage>http://www.google.com/ig/directory?synd=open]] を特定のページに埋め込みたかったのででっちあげてみたのですが、ようは生のHTMLコードをそのまま吐いているだけなので、引数チェックこれでいいのかな…セキュリティ面がよくわかりません。

 <?php
 // Author: hnagoya@gmail.com at 2006-10-06
 // Version: 0.0.1
 // googlegadgets.inc.php
 // License: GPL v2
 // $Revision: 0.3 $ $Date: 2006-10-08 00:37:36+09 $
 // -------------------------------------------------------------------
 // ref. http://www.google.com/ig/directory?synd=open
 // ex. &googlegadgets(<script src="http://gmodules.com/ig/ifr?url=http://www.wo\rdwebonline.com/wordweb_google.xml&synd=open&w=320&h=35&title=WordWebOnline.com\&border=http%3A%2F%2Fgmodules.com%2Fig%2Fimages%2F&output=js"></script>);
 // Reference: http://www.google.com/ig/directory?synd=open
 // How to use: &googlegadgets(<script src="..."></script>);
 // -------------------------------------------------------------------
 
 function plugin_googlegadgets_init() {
     # nop
     // nop
 }
 
 function plugin_googlegadgets_convert() {
     return plugin_googlegadgets_sub(func_get_args());
 }
 
 function plugin_googlegadgets_inline() {
     return plugin_googlegadgets_sub(func_get_args());
 }
 
 function plugin_googlegadgets_action() {
     return plugin_googlegadgets_sub(func_get_args());
 }
 
 function plugin_googlegadgets_sub($a) {
     $m = array();
     if (preg_match('/^(<script src="http:\/\/gmodules.com\/ig\/ifr\?(.*)"><\/script>)$/', $a[0], &$m)) {
         return $m[0];
     } else {
         return false;
     }
     return preg_match('{^(<script\ src=
                           "http://gmodules.com/ig/ifr\?(?:[\w:\./\+\-%&=]+)"
                           ></script>)$}x',
                       trim($a[0]), &$m) ? $m[0] : false;
 }
 ?>


- パッみたかんじ、XSS 脆弱性がありますね。(.*) で得る内容を htmlspecialchars などサニタイズしないといけないと思います。 --  &new{2006-10-06 (金) 23:38:05};
-- 単純に htmlspecialchars なんかでサニタイズしちゃうと安全ですけど意味ないURLになってしまうので…ちょっと正規表現でのチェック強くしてみましたが google gadgets のURLフォーマットの仕様ってどこかにありますかね。 --  &new{2006-10-07 (土) 23:45:13};
- しかし、許可HTML を制限してプラグインにHTMLを渡すというアプローチは珍しいですね。 --  &new{2006-10-06 (金) 23:39:02};
-- google gadgets は <script src="..."></script> というHTMLコードを使えと指示してくるので、できればそのままコピペして使いたいなあという希望がありまして。 --  &new{2006-10-07 (土) 23:51:37};
- うーむ、管理者しか使えないように、凍結ページでのみ発動とかした方がいいような気がする。 --  &new{2006-10-08 (日) 00:56:14};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.054 sec.

OSDN