面白いことに、私は2日前に私のすべての音楽のためにPHPのメディアギャラリーを書きました。私も同様の問題がありました。私はプレーヤーのためにhttp://musicplayer.sourceforge.net/を使用しています。プレイリストはphp経由で構築されます。すべての音楽の要求があっxfer.phpというスクリプトを行くファイル= WHATEVER
$filename = base64_url_decode($_REQUEST['file']);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));
// Put either file counting code here. either a db or static files
//
readfile($filename); //and spit the user the file
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
そして、あなたはファイルを呼び出すようなものを使用:?あなたには、いくつかのJavaScriptを使用している場合
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_,');
}
http://us.php.net/manual/en/function.base64-encode.php
か実際のリンクをmp3ファイルなどにする必要があるフラッシュプレーヤー(JWプレーヤーなど)では、テキスト "& type = .mp3"を追加することができます。最後のlinkeは "www.example.com/ xfer.php?file = 34842 ffjfjxfh &タイプ= .mp3 "。そうすれば、ファイルリンクに影響を与えることなくmp3拡張子で終わるように見えます。
このスクリプトにはディレクトリトラバーサルの脆弱性が存在します。攻撃者は、xfer.php?file = ../../../passwdやその他の必要なものを渡すことができます!注意してください!!! –
ファイルが大きすぎてトラフィックが多い場合は、サーバーのメモリ制限が爆発します。 – tmsimont
"ディレクトリトラバーサル脆弱性"の修正方法? – anarchOi