1

たとえば、PHPスクリプトがあります

<?php
$name="Alfred";
echo $name;
?>

次のスクリプトを使用して暗号化しました(www.rightscripts.com/phpencode/index.phpによる)

<?php 
eval(gzinflate(str_rot13(base64_decode('encrypted code')))); 
?>

ただし、「$name="Alfred";」のみを出力します。および「未定義の変数 $name」。何が問題ですか ?他の解決策はありますか?私を助けてください ?

4

1 に答える 1

4

このように「エンコード」しても、実際には何からも保護されません。

エンコードされた PHP コードはサーバー上にあり、それをデコードして通常の PHP に戻すコードもサーバー上にあります。

エンコードされた PHP スクリプトを読み取るためのサーバーへの十分なアクセス権を誰かが持っている場合、デコーダー スクリプトを読み取るための十分なアクセス権も持っていることはほぼ確実です。つまり、コードは実際にはまったく保護されていません。

必要なことを実行できる難読化ツールとエンコーダーは多数ありますが、結局のところ、コードに対して実際に行っていることは、コードの速度を低下させることだけです (eval()他の問題は別として、これは主要なパフォーマンス キラーです)。 .

より良い解決策は、コードをコンパイルすることです。HipHop と呼ばれる PHP コンパイラーが、このトリックを実行してくれます。試してみる価値があります。

コンパイルされたコード (どの言語でも) であっても、誰かがコードを分解してあなたの秘密を知ろうとする可能性は依然としてありますが、単純なエンコードされたスクリプトよりもはるかに難しく、通常よりも高速に実行されるはずです。コンパイルされた場合、エンコードされた場合は通常よりも遅くなるため、両方の方法で勝ちます。

于 2012-04-17T18:17:07.443 に答える