*img.inc.phpで指定されるファイル名のチェックがされていない

-ページ: BugTrack
-投稿者: [[reimy]]
-優先順位: 重要
-状態: 提案
-カテゴリー: プラグイン
-投稿日: [[2002-06-30]] (日) 23:14:01
-バージョン:

**メッセージ
-指定されたファイル名のチェックがされていない
--gif、jpg、jpeg、pngに限定すべき、aviなど動画はいらんでしょ。cgiを許すとやばそうな…
--ファイル名に使えない文字がないかのチェック→XSS脆弱性の可能性も

----
-が~ん。そんなのが残っていたのか。。。hackだhack!! -- [[seagull]] SIZE(1):2002-06-30 (日) 23:14:54
-。。。ってか、URLエンコードすべき所をHTMLエンコードしてるし。。一回ふやかさないと。。 -- [[seagull]] SIZE(1):2002-06-30 (日) 23:26:13
-URLはファイル名云々とは関係ない話なので、文字種検査しては行けません。単に、URLエンコードしてからHTMLエンコードを(この順番で)すればいいだけなんですけどね。(HTMLエンコードは一応なされているので、XSSにはならないです) -- [[seagull]] SIZE(1):2002-07-01 (月) 00:36:05
-% ; ) ( +などはそのまま通すみたいです。 -- [[reimy]] SIZE(1):2002-07-01 (月) 00:43:15
-URLエンコードしてませんからね。それらの文字がURLに入っていた場合、XSSや誤動作を回避するのは呼ばれた側の責任です。 -- [[seagull]] SIZE(1):2002-07-01 (月) 00:48:09
-あ~でも、思った通りのURLが渡せないのは問題だなぁ~ -- [[seagull]] SIZE(1):2002-07-01 (月) 00:48:39
-とりあえず、画像以外が貼られるのを防ぐための暫定処置 -- [[reimy]]
 <?
 // $id$
 function plugin_img_convert()
 {
	if(func_num_args()!=2) {
		return;
	}
	$aryargs = func_get_args();
	$url = $aryargs[0];
	$align = strtoupper($aryargs[1]);
	if($align == 'R' || $align == 'RIGHT') {
		$align = 'right';
	}
	else if($align == 'L' || $align == 'LEFT') {
		$align = 'left';
	}
	else {
		return "<br style=\"clear:both\">";
	}
        if(preg_match("/^http:\/\/(\S+?)(\.jpg|\.jpeg|\.gif|\.png)$/si", $url) == false) return;
	return "<div style=\"float:$align;padding:.5em 1.5em .5em 1.5em\"><img src=\"$url\" alt=\"\" /></div>";
 }
 ?>

#comment

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

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.225 sec.

OSDN