この質問を何度も見てきましたが、ダウンロードを強制するために機能するコードに大きく関係しており、それで発生する可能性のある「セキュリティ」の問題については何も見つけられなかったと思います. ログイン後にダウンロードしてもらいたい(ホットリンクを防ぐため)。これを htaccess と PHP で両立させようとしています。PHP ファイルはログインをチェックし、OpenId (何か) も持っています。ダウンロードの部分は次のとおりです。
$url = "{$_SERVER['DOCUMENT_ROOT']}/myfolder/{$myfile}";
if(!is_file($url)) {
//whatever
}elseif (is_file($url)){
switch($url['extension']) {
case 'pdf': $ext = 'application/pdf'; break;
case 'zip': $ext = 'application/zip'; break;
case 'pps': $ext = 'application/vnd.ms-powerpoint'; break;
case 'pptx': $ext = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'; break;
case 'docx': $ext = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; break;
default: $ext = 'application/force-download';
}
header('Pragma: public');
header('Expires: 0');
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: '.$ext);
header('Content-Disposition: attachment; filename="'.basename($url).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
readfile($url);
exit();
}
Myfolder
すべてを拒否する htaccess で保護されています。これが十分に安全かどうかはわからないので、ひどく安全でないことをする前に質問します. 人々が「あなたの貴重なスクリプト」をダウンロードできることを読んだことがありますが、その方法がわかりません (私が知る限り、PHP はダウンロードできません)。ちなみに、そのページのどこかで処理されている XSS を除いて、私には重大な脆弱性があると思いますか? 前もって感謝します。