PHPファイルを暗号化する方法とは?

このQ&Aのポイント
  • 自作でPHPファイルを暗号化(難読化)する方法を検討中です。ファイル全体を暗号化したいが、PHPの開始・終了タグとHTMLタグの混在が困難です。eval関数やecho関数では要件を満たせないため、他の方法を探しています。
  • ネット上で調べてみましたが、phpコードのみを暗号化してeval関数で実行するものしか見つけられませんでした。ファイル全体を暗号化し、復号・実行する方法は限定的です。暗号化の目的は、ファイルの内容を隠蔽し、不正利用を防ぐためです。
  • phpバージョンは5.2.14です。暗号化の方法やアドバイスがあれば教えていただきたいです。暗号化を実現するためには、ファイルの構造を解析し、タグの置き換えや処理の分割などが必要になるかもしれません。詳しい方からの回答をお待ちしています。
回答を見る
  • ベストアンサー

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です。 以上、よろしくお願いします。

  • k_ken
  • お礼率83% (5/6)
  • PHP
  • 回答数3
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
noname#140925
noname#140925
回答No.2

私用(趣味)で提供しているのなら、割り切った方が良いのでは? 業務で提供なら、それこそ再利用の禁止を契約書に明記する方向で、金額上乗せ出来るのなら上乗せしておくとか。 私用なら兎も角、業務だと、そもそもソース見る人はプロになると思いますので。 (提供先の担当者が見るとは限りませんから。)

k_ken
質問者

お礼

契約書に再利用や改変などを明記するとともに、 また、ソースを当初予定していました簡単な暗号化をかけることとしました。 暗号化は、base64方式で暗号化し、復号した情報に対して PHPコードとPHPコードでない処理をeval関数とecho関数で実行するように 暗号化ファイルを一括で生成するツールをPHPで自作し、対応しました。 ご回答ありがとうございました。

k_ken
質問者

補足

今回は業務での提供となります。 契約書に再利用や改変などは明記することとなりますが、 もう少し調査を行い、暗号化が厳しいようでしたら、 ソースはそのままとするか、暗号化ソフトの購入かを上司に決定して頂きます。 ご意見ありがとうございます。

その他の回答 (2)

  • andre55
  • ベストアンサー率0% (0/1)
回答No.3

使用するサーバ環境はLinux/windowsなど どのような環境でしょうか?

k_ken
質問者

お礼

契約書に再利用や改変などを明記するとともに、 また、ソースを当初予定していました簡単な暗号化をかけることとしました。 暗号化は、base64方式で暗号化し、復号した情報に対して PHPコードとPHPコードでない処理をeval関数とecho関数で実行するように 暗号化ファイルを一括で生成するツールをPHPで自作し、対応しました。 ご回答ありがとうございました。

k_ken
質問者

補足

サーバ環境はWindowsで調査しています。 Linuxでは、php_screwで暗号化した状態での動作確認はできました。 試しに、Windows用にphp_screwを改良してみましたが、 一応動作をしたのですが、何度かajax通信を実施することで サーバが固まってしまい、うまく改良できなかったようです。 php_screwまでの暗号化は求めておりませんが、 windows版でソース内容を上記の質問内容に記載のように 暗号化(難読化)できればと考えております。 もう少し調査を続けたいと思います。 以上、よろしくお願いします。

noname#140925
noname#140925
回答No.1

phpのソースコードを誰かに提供する、と言う事でしょうか? サーバ上で貴方が作ったphpコードを実行するだけなら、利用者にはソースは見えないので、暗号化する意味は無いと思いますが。

k_ken
質問者

補足

言葉足らずで申し訳ありません。 phpのソースコードを提供して使用して頂くことになり、 phpファイルを直接開くことが可能な状態にあります。 そのため、暗号化(難読化)をしなければならず、 今回、ここで質問させて頂いております。 よろしくお願いします。

関連するQ&A

  • PHPを難読化したい

    ちょこっと自作したPHPシステムを配布する際に、 人にコードを解析されないように難読化したいと思っています。 条件としては、難読化したソースファイルをそのままPHPファイルとして利用できる程度の難読化をしてくれればいいと思っています。 お勧めの難読化システムはありませんか?

    • 締切済み
    • PHP
  • PHPソースコード簡易暗号化(難読化)「POBS」の使い方。

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

    • ベストアンサー
    • PHP
  • PHP で暗号化して何かを送信することってあるのでしょうか?

    こんにちは、趣味で PHP を触っています。 とても初歩的な質問になってしまうと思いますが、よろしくお願いします。 PHP では crypt 関数で暗号化することができるらしいのですが、実際にこれを使わなければいけない場合とはどのような時なのでしょうか? http://jp2.php.net/manual/ja/function.crypt.php PHP で処理したことを MySQL などのデータベースに書き込む場合、主にサーバー内での処理なので外部から見られることなんてないと思っていましたが、見ることは可能なのでしょうか? それともう一つ質問がありまして、マニュアルには「復号するための関数はありません。 crypt() が使用しているのは単方向アルゴリズムだからです。」とありますが、それだと暗号化すると二度とその情報が何かわからなくなるのではないでしょうか? 何か複合化する方法があるのですか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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
  • PHP パラメータの暗号 復号

    PHPのパラメータを暗号化して 取得側で復号処理も行いたいのですが・・・。 いろいろなサイトをみて試していますが、暗号化された文字列に、 おそらく+(プラス)が入ると復号がうまく行きませんでした。 みなさんはどのようにされていますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 暗号化(perl)→復号化(php)

    暗号化キーを使用した暗号化→復号化で cgi(perl)で暗号化し、phpで復号化を行おうとしております。 AES暗号を使用したのですが、いろいろ設定を変えて 試みたのですが、うまくいきませんでした。 他に暗号化キーを使用した暗号化の方法がありましたら 教えてください。 暗号化(perl)→復号化(php)で実績のあるモジュールが あれば非常に助かります。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • PHP内 メールアドレス 暗号化 必要性あり?スパム対策

    こんにちは、 PHPファイル内に記述しているメールアドレスは、HTMLファイルに記述しているメールアドレスのようにメールアドレスを自動回収するクラウラーに回収されてしまうのでしょうか? もしそうであれば、PHPファイル内で下記のように変数として使用するメールアドレスを暗号化したいのですが、 >コード $mail = "example@example.com" 「example@example.com」を暗号化したいです。 >end コード $mailは、「mail」関数や「send_mail」関数等に格納してメール送信に使用しするので、今回の場合、メールアドレス(example@example.com)がブラウザーに出力される必要はありません。 PHPファイル内のメールアドレスを暗号化する場合、通常のHTMLを16進数に変更するソフトで暗号化(16進数化)すれば良いのでしょうか? ちなみに、HTMLメールアドレスを16進数に変更するソフトは、「HTMLエンティティ生成」を現在使用しています。 URL:http://ab.jpn.ph/soft/html_rand.html もしもHTMLを16進数に変更するソフトでのphpファイル内のメールアドレスの暗号化が不可能な場合、PHP内に記述されたメールアドレス(又はPHPコードを)暗号化するソフトや方法などをご紹介下さい。 よろしくお願いします。 キャサリン

    • ベストアンサー
    • PHP
  • HTML難読化ツールを探しています。

    現在、HTMLの難読化ツール(無料、または自作も可)を探しています。 フリーソフトを探してみても、JavaScriptやCssの難読化ツールはヒットするのですが、 HTMLファイルの難読化ツールを見つけることができません。 ツールのイメージとしては、コメントの削除・改行コードの削除などを行ってくれるものです。 さらに、欲を言えば、コマンドラインで実行可能なものだと嬉しいです。 もし、ご存じでしたら、ご回答をお願い致します。 使用PC : Windows7

    • ベストアンサー
    • HTML
  • 難読化?暗号化?乱数化?

    こんにちは。 androidのプログラムで行いたいことがあるのですが、どんなキーワードで調べたらよいのかわからず困っています。 ある値Aを別の値Bに変換する処理なのですが、 A->B A'->B' A''->B'' と変換します。 A,A',A''と変換元の値が異なれば、変換後の値もB,B',B''と必ず違う値となります。 A,A',A''はそれぞれ別の端末内での値ですので、履歴等は使えません。 Aから暗号化でBを作る方法でまずまずいけるのですが、 B,B',B''から元の値、A,A',A''を求めることを不可能にしたいのです。 これは可能でしょうか。 もちろん、暗号化したものを、復号キーなしで元に戻すことはほぼ不可能なわけですが、 そもそも復号キーが存在しえない方法はあるのでしょうか。 以上です。ヒントでも構いません。よろしくお願いします。

    • ベストアンサー
    • Java
  • phpのコードで暗号化された文字列を得る方法

    WordPressの無料で配布されているテンプレートの footer.phpにはこのようなコードが書かれています。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ <? eval(gzinflate(base64_decode('暗号化された文字列'))); ?> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 文字列には英数字が沢山並んでいますが、これを暗号化される前の状態にしたいです。 どうすれば良いでしょうかご教示お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう