Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对php函数进行编码_Php_Security_Base64 - Fatal编程技术网

如何对php函数进行编码

如何对php函数进行编码,php,security,base64,Php,Security,Base64,我想对包含一些php函数的php页面进行编码 例如,我有一个名为:code.php的页面,其中包含以下函数: <?php function data(){ echo "foo"; ... } function storage(){ echo "storage files.."; ... } ?> 我在其他php页面中使用这些函数,我希望其他用户能够保护它们。我如何对他们的代码进行编码? 我阅读了base64_encode()的相关内容,但示例仅显示了如何对字符串进行编码:如

我想对包含一些php函数的php页面进行编码

例如,我有一个名为:code.php的页面,其中包含以下函数:

<?php 
function data(){
echo "foo";
...
}

function storage(){
echo "storage files..";
...
}
?>

我在其他php页面中使用这些函数,我希望其他用户能够保护它们。我如何对他们的代码进行编码? 我阅读了base64_encode()的相关内容,但示例仅显示了如何对字符串进行编码:如何使用此解决方案对php函数进行编码和解码


谢谢大家!

如果你想阻止其他人看到你的PHP代码,你可以尽可能使它变得困难(通过缩小、模糊,不管你想叫它什么),或者对它进行加密

这里有一个答案,还有一些建议,我想补充的是

对于加密代码,您可能需要对web服务器进行进一步更改,例如apache模块。使用模糊处理只会使其他开发人员更难阅读,例如将变量和函数名更改为无意义和难以阅读的内容

您将不可避免地需要保留一份未经模糊处理的PHP副本,以便以合理的方式处理它,如果您只在服务器上开发,这可能会很困难

要使用Base64,您可能会考虑这样做:

eval(base64_decode('ZnVuY3Rpb24gZGF0YSgpew0KZWNobyAiZm9vIjsNCn0NCmZ1bmN0aW9uIHN0b3JhZ2UoKXsNCmVjaG8gInN0b3JhZ2UgZmlsZXMuLiI7DQp9DQokZGF0YSA9ICdkYXRhJzsNCiRzdG9yYWdlID0gJ3N0b3JhZ2UnOw=='));
这里发生的事情是,base64字符串实际上是有效的PHP,您首先要对其进行解密,然后对其进行求值。解码字符串的外观示例如下:

function data(){
echo "foo";
}
function storage(){
echo "storage files..";
}
$data = 'data';
$storage = 'storage';
在上述
eval
呼叫后,您将执行以下操作:

// call the data function
$data();

// call the storage function
$storage();
如报告所述:

PHP支持变量函数的概念。这意味着如果 变量名附加了括号,PHP将查找 与变量的计算结果同名的函数,以及 将尝试执行它

因此,调用
$someVariable()
将尝试运行名为
$someVariable
包含的任何内容的函数。如果将
$someVariable
设置为
foo
,它将尝试运行
foo()
,如果将
$someVariable
设置为
香肠
,它将尝试运行
香肠()
,依此类推


显然,请记住,您需要确保这些函数变量的名称不会在其他地方使用。

如果您想阻止其他人看到您的PHP代码,您可以尽可能使其变得困难(通过缩小、模糊,无论您想叫什么),或者对其进行加密

这里有一个答案,还有一些建议,我想补充的是

对于加密代码,您可能需要对web服务器进行进一步更改,例如apache模块。使用模糊处理只会使其他开发人员更难阅读,例如将变量和函数名更改为无意义和难以阅读的内容

您将不可避免地需要保留一份未经模糊处理的PHP副本,以便以合理的方式处理它,如果您只在服务器上开发,这可能会很困难

要使用Base64,您可能会考虑这样做:

eval(base64_decode('ZnVuY3Rpb24gZGF0YSgpew0KZWNobyAiZm9vIjsNCn0NCmZ1bmN0aW9uIHN0b3JhZ2UoKXsNCmVjaG8gInN0b3JhZ2UgZmlsZXMuLiI7DQp9DQokZGF0YSA9ICdkYXRhJzsNCiRzdG9yYWdlID0gJ3N0b3JhZ2UnOw=='));
这里发生的事情是,base64字符串实际上是有效的PHP,您首先要对其进行解密,然后对其进行求值。解码字符串的外观示例如下:

function data(){
echo "foo";
}
function storage(){
echo "storage files..";
}
$data = 'data';
$storage = 'storage';
在上述
eval
呼叫后,您将执行以下操作:

// call the data function
$data();

// call the storage function
$storage();
如报告所述:

PHP支持变量函数的概念。这意味着如果 变量名附加了括号,PHP将查找 与变量的计算结果同名的函数,以及 将尝试执行它

因此,调用
$someVariable()
将尝试运行名为
$someVariable
包含的任何内容的函数。如果将
$someVariable
设置为
foo
,它将尝试运行
foo()
,如果将
$someVariable
设置为
香肠
,它将尝试运行
香肠()
,依此类推


显然,请记住,您需要确保这些函数变量的名称不会在其他地方使用。

其他用户可以打开并读取我的php文件,因为他们也可以访问我的本地ubuntu服务器。因为他们不是熟练的程序员,所以我只想混淆我的php函数。我只需要以某种方式隐藏我的代码。因此,base64_encode()不是一个很好的解决方案?为了满足我的好奇心,为什么不希望其他开发人员能够阅读您的代码?无论如何,您仍然需要能够开发代码,这意味着您需要一个未混淆的文件版本。你得把它们藏起来。我在回答中添加了更多的细节,这是因为其他开发人员很懒惰,有时会出于自己的目的使用我的代码,我不喜欢这样。谢谢你的建议!我不理解$data()的用法;和$storage();,你能更好地解释我吗?添加了进一步的说明和到官方文档的链接,并提供了更多示例。@MarcusBarnet你不能阻止他们解密你的代码。其他用户可以打开和读取我的php文件,因为他们也可以访问我的本地ubuntu服务器。因为他们不是熟练的程序员,所以我只想混淆我的php函数。我只需要以某种方式隐藏我的代码。因此,base64_encode()不是一个很好的解决方案?为了满足我的好奇心,为什么不希望其他开发人员能够阅读您的代码?无论如何,您仍然需要能够开发代码,这意味着您需要一个未混淆的文件版本。你得把它们藏起来。我在回答中添加了更多的细节,这是因为其他开发人员很懒惰,有时会出于自己的目的使用我的代码,我不喜欢这样。谢谢你的建议!我不理解$data()的用法;和$storage();,你能更好地解释我吗?添加了进一步的描述和到官方文档的链接,并提供了更多示例。@MarcusBarnet你不能阻止他们解密你的代码。