- 追加された行はこの色です。
- 削除された行はこの色です。
**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