**googlegadgets.inc.php [#d02cee78]
|RIGHT:100|LEFT:360|c
|~サマリ|google gadget for your website の埋め込み|
|~リビジョン|0.3|
|~対応バージョン|1.4.x|
|~投稿者|[[hnagoya@gmail.com]]|
|~投稿日|&new{2006-10-06 (金) 14:18:28};|

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

 <?php
 // googlegadgets.inc.php
 // License: GPL v2
 // $Revision: 0.3 $ $Date: 2006-10-08 00:37:36+09 $
 // -------------------------------------------------------------------
 // Reference: http://www.google.com/ig/directory?synd=open
 // How to use: &googlegadgets(<script src="..."></script>);
 // -------------------------------------------------------------------
 
 function plugin_googlegadgets_init() {
     // 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();
     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.032 sec.

OSDN