🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

4回答

2056閲覧

PHPで関数やファイルそのものを難読化し、中身をわかりにくくさせる方法

d__..___

総合スコア18

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

3クリップ

投稿2019/10/07 20:17

編集2019/10/15 02:21

PHPで関数を難読化し、中身をわかりにくくさせる方法を教えてください。
例えば、test.phpは

<?php printf("hello"); ?>

と書いているファイルです。
このファイルの中身を暗号化させるencrypt.phpファイルを作りたいです。
具体的には、関数を自動で置換し、読みにくくさせるということをやりたいです。
$pattern = "abcdefghijklmnopqrstuvwstwz";
//$GLOBALS['動的に生成されるランダムな英字'] = "printf";//となるように、動的に$pattern[19].[...]とつなぐ
イメージ
$GLOBALS['sifuhgi'] = $pattern[19].[$pattern[15]....;//printfとなるようにする
$GLOBALS'動的に生成されるランダムな英字';
//イメージ
$GLOBALS'sifuhgi';
$patternの文字列は動的に生成させる(普通にabcdeと書くと解読されやすいため)
これを、他の関数にも対応させる
このサイトをヒントに考えているのですが、わかりません。どのようにすればよいでしょうか
https://jelleraaijmakers.nl/2016/04/dissecting-spammers-spam-script
最終的にはencrypt.phpをつくり、スクリプトごと暗号化させたいです。
いまはただ単にtest.phpを少しだけ難読化させるencrypt.phpを作りましたが、この程度では一瞬で解読されますので、これを改良して難読化レベルをあげてほしいです。
解読できないファイルを作るのは不可能なので、できるだけ解読したくないと思わせるようなものを作りたいので、
よろしくお願いします。

<?php $infile = "./test.php"; $outfile = "./test_encrypted.php"; $data="ob_end_clean();?>";

$data.=php_strip_whitespace($infile);
$data=gzcompress($data,9);
$data=base64_encode($data);
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
file_put_contents($outfile,$out);
?>
test.phpをより複雑に難読化させられるのでしたら、encrypt.phpの手法はどのような方法でもかまいません。
test.phpという通常のphpファイルをtest_encrypted.phpという難読化されたファイルを生成させられるよう
encrypt.phpを改良してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/10/07 21:18

phpコードが直接見られることはないはずですが、なぜ難読化したいのでしょうか あと質問ではなく作業依頼になってます。
Zuishin

2019/10/11 23:27

回答がついています。質問を元に戻してベストアンサーを決めてください。
kyoya0819

2019/10/12 00:26

内容の不可視化はおやめください。
kyoya0819

2019/10/12 00:26

ちなみにいくら消しても編集履歴から参照できますので悪しからず。
miyabi_takatsuk

2019/10/12 14:07

な、なんで削除なんでしょうか・・・? 回答も、質問者さんのご希望通りの圧縮方法を示した回答もあるのに・・・。 削除と文字を打つくらいなら、削除申請にされてはいかがでしょうか??
guest

回答4

0

外部の人間からサーバーに侵入ないし、ソースコードを落とされるということを想定してますか?

であればなおさらですが、
そもそも、サーバーサイドのスクリプトを覗かれる、盗まれる時点で、そのサーバーのセキュリティ自体に問題があります。

基本、サーバーサイドは、覗かれない、盗まれないからこそ、大事な、盗まれてはいけない情報などを格納、扱うものです。
なので、PHPのファイルなどを難読化させるリソースがあるなら、サーバーのセキュリティ強化にリソースを当てた方が価値的です。

投稿2019/10/08 01:16

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

できるだけ解読したくないと思わせるようなものを作りたい

モチベーションの問題なんで、提示のレベルで十分な気がしますけどね。
興味がなければ、シンタックスハイライトされてないコードってだけで読みたくは無いです。*すでに離脱者いるしw

そもそも今どきの php を使用したシステムでコードを 1 ファイルにまとめると制作/テスト/運用がものすごく面倒です。十分な難読化ですw

リンク先のコードは、spammer が使用する特殊要件であるため成り立ってますが、一般的には成立しないので、もし解析ハードルを上げたいのであれば、もっと容易に難読化できる言語を選択するのが良いと思います。

結論:spammer のコード面白い!

投稿2019/10/07 23:56

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まずPHPファイルが見られることはありません。
そのため、PHPにメールアドレスやパスワードを書くものが多いのです。

ちょっとコードを見る気が起きなかったのですが以下で良いかと思います。

1, ファイルを封印したい場合 -> ハッシュ化 (sha-2)
2, ファイルを封印したいけどすぐ戻したい場合 -> 暗号化 (AES等)
3, ファイルを普通に使いたい場合 -> 自力で頑張ってください

投稿2019/10/07 23:28

kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyoya0819

2019/10/07 23:29

まぁ、セキュリティに欠陥があってechoされたりFTP接続されたら見られますが。
guest

0

原理的に解読可能であることを許容できるなら、ioncubeとかsourceguardianとかが、もし今も販売されてるなら検討してみては?

投稿2019/10/08 09:03

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問