googlegadgets.inc.php

サマリgoogle gadget for your website の埋め込み
リビジョン0.5
対応バージョン1.4.x
投稿者hnagoya@gmail.com
投稿日2006-10-06 (金) 14:18:28

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

<?php
// googlegadgets.inc.php
// License: GPL v2
// $Revision: 0.5 $ $Date: 2006-10-10 18:53:09+09 $
// -------------------------------------------------------------------
// Reference: http://www.google.com/ig/directory?synd=open 
// How to use: &googlegadgets(<script src="..."></script>);
// -------------------------------------------------------------------

// 誰でもこのプラグインを使ってよければ A を、そうでなければ B を有効にする
//define(PLUGIN_GOOGLEGADGETS_USE_SECURITYCHECK, FALSE); // A
define(PLUGIN_GOOGLEGADGETS_USE_SECURITYCHECK, TRUE); // B

function plugin_googlegadgets_init() {
	// nop
}

// B が有効の場合のアクセス権チェック
// * pukiwiki がリードオンリー設定で運用されている
// * 該当ページが凍結されている
// * 該当ページが編集可能である
// のいずれかが成立していれば OK  
function plugin_googlegadgets_securitycheck_ok() {
	global $vars;
	$page = $vars['page'];
	return (PKWK_READONLY || is_freeze($page) || edit_auth($page, TRUE, FALSE));
}

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) {
	global $vars;
	if (PLUGIN_GOOGLEGADGETS_USE_SECURITYCHECK &&
		!plugin_googlegadgets_securitycheck_ok()) {
		return FALSE;
	}
	$m = array();
	return preg_match('{^(<script\ src=
                          "http://gmodules.com/ig/ifr\?(?:[\w:\./\+\-%&=]+)"
                          ></script>)$}x',
					  trim($a[0]), &$m) ? $m[0] : FALSE;
}
?>


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-21 (火) 23:42:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.399 sec.

SourceForge