**googlegadgets.inc.php [#d02cee78] |RIGHT:100|LEFT:360|c |~サマリ|google gadget for your website の埋め込み| |~リビジョン|0.0.1| |~対応バージョン|1.4.x| |~投稿者|[[hnagoya@gmail.com]]| |~投稿日|&new{2006-10-06 (金) 14:18:28};| google gadget を特定のページに埋め込みたかったのででっちあげてみたのですが、ようは生のHTMLコードをそのまま吐いているだけなので、引数チェックこれでいいのかな…セキュリティ面がよくわかりません。 <?php // Author: hnagoya@gmail.com at 2006-10-06 // Version: 0.0.1 // License: GPL v2 // ------------------------------------------------------------------- // 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>); // ------------------------------------------------------------------- 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(); if (preg_match('/^(<script src="http:\/\/gmodules.com\/ig\/ifr\?(.*)"><\/script>)$/', $a[0], &$m)) { return $m[0]; } else { return false; } } ?> - パッみたかんじ、XSS 脆弱性がありますね。(.*) で得る内容を htmlspecialchars などサニタイズしないといけないと思います。 -- &new{2006-10-06 (金) 23:38:05}; - しかし、許可HTML を制限してプラグインにHTMLを渡すというアプローチは珍しいですね。 -- &new{2006-10-06 (金) 23:39:02}; #comment