• 締切済み

PHP リソースファイルの暗号化・難読化

お世話になります。 <img src="">や<video><source src=""></video>等のリソースファイル(src)を暗号化・難読化する方法を探してます。 base64を使った方法を試みました。 しかし、ファイルの容量が大きいと、 読み込みに時間がかかる。・サーバーに負荷がかかる。・ファイル容量並みのメモリ容量を必要とする。 があり諦めました。 <video width="640" height="320" controls="controls"> <source src="data:video/mp4;base64,<?php $file = 'video.mp4'; echo base64_encode(file_get_contents($file)); ?>" type="video/mp4"> </video> 他に良い方法はありませんでしょうか?

みんなの回答

noname#244856
noname#244856
回答No.1

BASE64は暗号化ではなく単なる符号化で、元に戻すことが出来ます。したがってコンテンツを守りたいという理由からそうしているならば無意味と言えます。 まず、暗号化・難読化させたい理由をはっきりとさせてください。もしログインしている特定のユーザーにしか表示を許可したくないなどの理由であれば、PHP経由でファイルをブラウザにダウンロードさせることで解決出来ます。この場合、リソースが格納されているディレクトリはpublic_htmlの外においてください。 【image.php】 <?php // セッション開始 session_start(); // Content-Typeを返す header('Content-Type: image/png'); switch (false) { // ログイン状態か、idをGETパラメータで受け取っているかどうか case isset($_SESSION['logined'], $_GET['id']): // "[id].png" という名前のファイルが存在するかどうか case is_file($name = sprintf('/foo/bar/images/%d.png', $_GET['id'])): // 該当しない項目があった場合は強制終了 exit; } // ファイルデータ読み出し readfile($name); 【sample.php】 <img src="image.php?id=3" />

関連するQ&A