0

この質問を何度も見てきましたが、ダウンロードを強制するために機能するコードに大きく関係しており、それで発生する可能性のある「セキュリティ」の問題については何も見つけられなかったと思います. ログイン後にダウンロードしてもらいたい(ホットリンクを防ぐため)。これを 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 を除いて、私には重大な脆弱性があると思いますか? 前もって感謝します。

4

1 に答える 1