ホームページ  >  記事  >  バックエンド開発  >  thinkphp の小さなバグ

thinkphp の小さなバグ

WBOY
WBOYオリジナル
2016-06-23 14:11:30797ブラウズ

2 日前、私の Web サイトに不可解な追加ファイルがあることに気づきました
元のアドレス: http://bbs.csdn.net/topics/390469279

今朝これらの不可解な HTML ファイルを観察し、ついに問題を発見しました。 ! !
理由:
静的キャッシュが有効になっている場合、静的ルールには次のようなパラメーターがあります。

//静态缓存	'HTML_CACHE_ON'=>true,	'HTML_CACHE_RULES'=> array(	'infor:search' => array('home/{:module}/{:action}/{key}'),	),



{key}=test
Html/home/Infor/search/test.html
{key}=.. / boot
Html/home/Infor/boot.html
はい、2 番目の静的ファイル HTML は上位ディレクトリに飛んだので、サーバー ディレクトリにはさらに多くのファイルとフォルダーがあります。
これは Web サイトに害を及ぼすことはありませんが、非常に迷惑です
つまり、静的ルールにパラメータを直接使用しないでください。 {$_SERVER.REQUEST_URI|md5 } の処理には MD5 を使用することをお勧めします。

これは thinkphp のバグではありません
当然のことながら、自分の行動には責任を持たなければなりません

例のルールについては、 if key = ../boot

By $rule = preg_replace('/{(w+)} /e ',"$_GET['\1']",$rule); home/MODULE_NAME/ACTION_NAME/../boot として解釈されていることがわかります

TP を妨げる理由はありますか?静的ファイルを上位ディレクトリに配置しますか?

これは thinkphp のバグではありません

当然のことながら、自分の行動には責任を持たなければなりません


例のルールについては、 if key = ../boot
By $rule = preg_replace('/{(w+)} /e ',"$_GET['\1']",$rule);
home/MODULE_NAME/ACTION_NAME/../boot として解釈されていることがわかります

TP を妨げる理由はありますか?静的ファイルを上のディレクトリに配置しますか?

TP は {key} パラメータのフィルタリングを検討すべきだと思います。

フィルタリングしたい場合は、ルールを提供してコードを記述する必要があります
少なくとも http://bbs.csdn.net/topics/390469279/..x のような URL は攻撃を構成することはできません
他のものを期待することはできません私があなたのためにやったことすべてをフィルタリングするためです。結局のところ、それは単なる開発ツールです。
デデでこの現象が発生する場合はバグと言えます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。