• 締切済み

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> 他に良い方法はありませんでしょうか?

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

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

  • PHPファイルの暗号化(難読化)方法

    PHPファイルの暗号化(難読化)方法 PHPファイルを暗号化(難読化)する方法を探しています。 現在は、有料の暗号化ツールを使用せずに、 自作で暗号化(難読化)を実施可能かどうかを検討しております。 ファイル全体を暗号化したいのですが、 ファイル内容は、PHPの開始タグ(<?php)、終了タグ(?>)とHTMLタグが混在していて それをbase64_encodeなどを使用し、暗号化をかけた場合、 base64_decodeで復号をかけたデータをブラウザにて実行させたい場合は、 どのようにすればよいか困っています。 eval関数は、phpソースコードを実行するため、 PHPの開始タグ、終了タグをのぞいた、phpコードしか実行できません。 echo関数では、phpソースコードもそのまま出力されます。 PHPの開始タグ、終了タグとHTMLタグ混在していても、 ブラウザ上でphpコードの実行とHTMLタグの出力が実行できる方法はないでしょうか。 ネット上で調べてみましたが、 phpコードのみを暗号化して、eval関数で実行するものしか 発見することができませんでした。 そもそも、ファイル全体を上記のような方法で復号化⇒実行することは無理で、 ファイルの中身を解析し、タグの置き換えや、 eval関数が使用可能な処理とそうでない処理とに分けるようなことになるのでしょうか。 暗号の目的は、ファイルが一見、何を行っているのかわからなく、 そのまま処理を使いまわしできないようにしたいためです。 PHPや暗号化に詳しい人が復号化できてしまうことは、理解しております。 何か方法やアドバイス等、ございましたら、 ご回答頂ければと思います。 phpバージョンは、5.2.14です。 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • perlを難読化、暗号化させたい

    ホームページや、普通のフリーソフトのソースは簡単に難読化や暗号化、コンパイルができて、簡単に見ることができなくなりますが、perlのソースを暗号化?難読化させたいのですが、何か、良い方法は無いでしょうか? ご存知の方、教えてください。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • PHPソースコード簡易暗号化(難読化)「POBS」の使い方。

    PHPソースコード簡易暗号化(難読化)「POBS」の使い方。 PHPソースコードを簡易的に暗号化したくて見つけたのが「POBS」でしたが、セッティング方法がいまいちよくわからず、いまだ使えません。 すでに該当ファイルをダウンロードし、サーバにアップロードし、POBSの画面はブラウザ表示できているのですが・・ どなたかわかる方がいましたら、ご教授くださいませ。 よろしくお願いします。 参考にしていたサイトは以下です。 http://pobs.mywalhalla.net/ http://phpspot.org/blog/archives/2006/01/phpjavascriptpo.html

    • ベストアンサー
    • PHP
  • MYSQLから、画像表示するには

    symfonyを使用してます。 DBの型はBLOBです、画像の保存はphpadminから、参照ダイアログで登録。 「$photos->getPhotoData()」←DBからとってきたデータ。 以下のソースで、画像表示すると思うのですが、表示しない。 ---ソース1--------------------------------------------- echo '<img src="data:image/jpeg;base64,'.base64_encode($photos->getPhotoData()).'" />' ; ------------------------------------------------------- ソース1を実行すると、「Warning: base64_encode() expects parameter 1 to be string, resource 」と言うエラーが出る。 ---ソース2--------------------------------------------- echo $photos->getPhotoData(); ------------------------------------------------------- ソース2を実行すると「Resource id #126 」と表示される。 表示させる方法をご教授ください。

    • ベストアンサー
    • PHP
  • gccでリソースファイルを使わない意味は?

    環境はgccで幾つかツールを作る時の事を考えてます。 リソースファイル(画像ファイルを除くリソースヘッダー、リソーススクリプト等。以下同様です)を使わない意味は、あると思いますか? あるなら、リソースファイルを使わないようにした時、感じられる或いは考えられる、メリット・デメリットは何ですか? リソースファイルを使わない事での、体験談等ありませんか? 以下に対するアドバイス等はありませんか? 僕が今思っているメリット・デメリットはこの主にこの4つです。 ・ボタン等コントロールを自前で描くことで、考えた物を細部まで作り込みやすい。 ・リソースファイルを気にしなくていい。 ・値保存用の変数が多くなるので、ソースが読みにくく、書きにくくなったり、ロジックが増えたりする。 ・自分で書いたロジックが増える分、処理を考えたりする事が増える事がある。 リソースファイルの事をあまり知りませんがよろしくお願いします。(使った事はあります)

  • PHPでの文字化け

    公開鍵による暗号化のプログラムで、ソースは以下のとおりです。 <?php // 初期設定 $data = file_get_contents('data.txt'); // 平文を読込み $cert = file_get_contents('cert.pem'); // 証明書を読込み $enc_file = 'enc'; // 暗号文ファイルパス // 公開鍵による暗号化処理 $cert_res = openssl_pkey_get_public($cert); // 証明書リソースを取得 openssl_public_encrypt($data, $enc, $cert_res); // データを暗号化 file_put_contents($enc_file, $enc); // 暗号文をファイル出力 ?> これで出力される暗号文が文字化けしたような文字コードになっているのですが、これは正常なのでしょうか? なにか、エンコード等する必要があるのでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • PHP の ファイルアップロード

    私は以下のスクリプトを実行しましたがエラーが出ました。誰か教えてください。 --------------------------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>ファイルアップローダー2</title> </head> <body> <form method="post" enctype="multipart/form-data" action="09_03_fileup.php"> <input type="file" name="data" size="30"> <input type="submit" value="表示!"> </form> <!--ここからPHPが始まります。--> <?php $updir = "./updir/";            //ファイルを保存するフォルダ $filename = $_FILES['data']['name']; if(file_exists($_FILES['data']['tmp_name'])){         //ファイルの存在を確認 tempの状態で確認  $filesize = filesize($_FILES['data']['tmp_name']);     //ファイルサイズを取得 tempの状態で取得  if($filesize <= 100000){   if(ereg("(^[a-zA-Z0-9_-]+)\.(jpg)|(^[a-zA-Z0-9_-]+)\.(gif)",$filename)){ //jpgかgifしかアップできない    move_uploaded_file($_FILES['data']['tmp_name'], $updir.$filename); //ファイルをuploadフォルダに保存     echo "ファイル名 " . $filename . " アップロード成功!";     echo $_FILES['data']['error'];     echo "<br><br>";     echo "<img src='./$updir/$filename'>";   } else {     echo "jpg かgif のファイルしかアップできません。或いはハイフン以外の記号があります。";   }  } else {     echo "$filesize Byte ファイルサイズが大きすぎます。<br>100000 Byte 以下にしてください。";  } } else {    echo "ファイルをアップした順にテーブルに並べていきます。20枚でお終い。<br>"; } //ここから保存されたファイルの表示部分の記述です。 if ($handle = opendir($updir)) {    //フォルダを開きます。  echo "<table border='1'>";  $cnt = 1;     //カウント用の数字です。   while (false !== ($file = readdir($handle))) {      //ファイルがあればすべて順に読みこむ    if ($file != "." and $file != "..") {     //.と..を読まないようにします。      if($cnt % 5 == 0){    //カウントが5で割って0なら右端なので</tr>を付ける       echo "<td><img src='$updir/$file' width='112'></td></tr>";      } else if($cnt % 5 == 1){   //5で割って1なら左端なので<tr>を付ける       echo "<tr><td><img src='$updir/$file' width='112'></td>";      } else {       echo "<td><img src='$updir/$file' width='112'></td>";      }    $cnt++;    }    if($cnt > 20){   //カウントが20を超えたら終了      break;    }   }  closedir($handle);      //フォルダを閉じます }    //ここからテーブルがぴったり右端で終わらなかった時の処理 if(!(($cnt-1) % 5 == 0)){  //右端ぴったりで終わらなかったら  $cvr = 5-($cnt-1) % 5;   for($a=1;$a<=$cvr;$a++){  //足りない分だけ補う    echo "<td width='112'> </td>";   } echo "</tr>"; } echo "</table>"; ?> <!--これでPHPは終わりです。--> </body> </html> --------------------------------------------------------------- エラーが以下の通りです --------------------------------------------------------------- Parse error: parse error, unexpected T_VARIABLE in /home/wwwbest/public_html/09_03_fileup.php on line 20 --------------------------------------------------------------

  • ファイルの暗号化解除

    DELL INSPIRON530 Windows XP p3 Professionalを使用しています。9月初旬XPの再インストールを行って以来外付HDD(Buffalo ES500U2)に保存してあったファイルの一部が暗号化されて開けません。マイクロソフトの【暗号化ファイルシステムの最善の使用方法】文中の暗号化解除に従ってプロパティを開いて暗号化解除の処置はしたのですが結果は同じです。又同じパテーションにあった音楽ファイル(mwa,mp3)もすべてアクセル拒否されまして困っています解決方法を教えてください。なにぶん初級程度の知識しかないもので、わかりやすく教えてください。

  • .aspファイルについて教えてください

    お世話になります 外部jsファイルを見れなくする方法を探していて http://external-file.com/ja/tatlo.html こちらで 完璧にするためには ASP 等で呼び出す方法が一番良い方法でしょう。 <script src="./javascript/external_file.asp" type="text/javascript"></script> サーバー側セッションでコントロールし、キャッシュにも残らず、アドレス指定でのDLも出来ないので、完璧になります。 という風に書かれてあったので拡張子をaspに変えて試してみたのですが直リンクすると普通にソースを見れてしまいます これはまだ自サーバー内で試しているからなのでしょうか? 教えていただけますでしょうか?

  • PHP ファイルupロードのセキュリティ

    ただいま ファイルUPロードするための簡単なPHPプログラムをせいさくしています 。 セキュリティの部分とか足らないところがるとは思うのですが、 下のプログラjムをどうやって改造すればいいのでしょうか? たとえば 容量を制限する。 ファイル種類を限定する等  おしえて頂きたいと思っています。 よろしくお願いたします。 <body> <p><?php if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0644); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } ?></p> </body> </html>

    • 締切済み
    • PHP

専門家に質問してみよう