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_Plugins_Wordpress - Fatal编程技术网

减少PHP插件被恶意攻击的机会

减少PHP插件被恶意攻击的机会,php,security,plugins,wordpress,Php,Security,Plugins,Wordpress,我想知道你用什么步骤来防止下载的插件被恶意攻击 例如,wordpress如何确保您下载的插件不只是执行unlink('/') 我假设部分取决于downloader自行决定是否安装插件,但插件系统是否采取措施将运行第三方插件的安全风险降至最低 谢谢! Matt Mueller取消链接('/')不会造成任何伤害,因为它只删除文件,您必须使用rmdir或更准确地说是递归rmdir实现。我不认为有任何方法可以防止恶意代码被执行,因为恶意代码有很多种方式。您可以限制某些函数在php.ini中被调用,但这只

我想知道你用什么步骤来防止下载的插件被恶意攻击

例如,wordpress如何确保您下载的插件不只是执行
unlink('/')

我假设部分取决于downloader自行决定是否安装插件,但插件系统是否采取措施将运行第三方插件的安全风险降至最低

谢谢!
Matt Mueller

取消链接('/')
不会造成任何伤害,因为它只删除文件,您必须使用
rmdir
或更准确地说是递归
rmdir
实现。我不认为有任何方法可以防止恶意代码被执行,因为恶意代码有很多种方式。您可以限制某些函数在php.ini中被调用,但这只能在一定程度上帮助您。例如,
str_repeat
unserialize
是常见的函数,但是如果使用正确的参数调用,它们可以立即检查分配给PHP脚本的所有内存。但这只是一个例子,更邪恶的一个可以充当后门或将所有登录信息通过电子邮件发送给开发人员。如果你不想自己审核代码,我想最终你必须信任开发人员和社区。

简单回答:你不能通过编程来完成这项工作。根本做不到。当然,Wordpress有某种验证程序来确定插件是否完全令人讨厌,但无法确定它是否安全

今年夏天我是Mozilla的实习生,我正在开发一个验证器,它可以在加载项提交到addons.Mozilla.org时扫描加载项。我只能想象Wordpress有一个非常类似的工具。其思想是,该应用程序完全拒绝公然的恶意代码(
eval(“邪恶的讨厌的代码”);
),而其余部分则通过一些简单的启发式方法进行分析。现有的算法根据它在附加包中看到的内容标记出一些潜在的危险信号,并将这些注释提交给编辑器,然后由编辑器审查代码。它实际上是一个人工操作的过程,但软件可以帮助处理很多繁重的工作

Mozilla验证程序使用的一些技术:

  • 语法检查
  • 代码和标记解析(HTML/CSS)以查找远程代码漏洞
  • Javascript解析和分析(将JS解析为AST树并分析每条语句,尽可能深入地评估静态表达式)
  • 兼容性/弃用测试
您可以在此处查看代码:


希望这有帮助

有一些PHP工具可以用来查找漏洞。php的开源分析工具包括和

如果您曾经使用过静态源代码分析,那么您知道这些工具将产生大量误报和误报。没有任何源代码分析工具可以100%告诉您程序是否有后门或恶意。如果可以的话,我们就不会有那么多网站被黑客攻击的问题。Wordpress本身非常不安全,所有的插件也是如此,这是因为错误,而不是恶意

恶意代码可能会被混淆、隐藏并以多种形式出现。试图发现一个偶然的漏洞比故意的要容易得多。PHP中的后门可以像添加或删除2个字节一样简单

删除2个字节:

$id=mysql_real_escape_string($id);
"select * from test where id=$id"
vs
"select * from test where id='$id'"
`$_GET[b]`;
或添加2个字节:

$id=mysql_real_escape_string($id);
"select * from test where id=$id"
vs
"select * from test where id='$id'"
`$_GET[b]`;

多年前,PHP团队要求Linux发行商停止调用“解释器崩溃bug”安全问题,因为PHP脚本可以做任何事情,以及操作系统访问控制系统允许它做的任何事情。(他们还要求对所有安全模式“中断”进行相同的操作。)无论您运行什么脚本,都可以完全访问进程所有者拥有的所有内容,这是出于设计。只运行你信任的代码。哦,哈哈,好的。。我在某个地方看到了它,它看起来很糟糕,所以我抓住机会把它写进了帖子。无论如何,谢谢你的洞察力+是的,没有办法保护WordPress安装不受失控插件的影响。Wordpress可以访问什么,插件可以访问什么。像
safe_mode
和阻塞功能这样的设置只能影响整个安装,而不能影响其中的一部分。只能从您信任的来源下载,并可能对可疑的
eval()
s和其他内容进行快速审核,这是最好的办法。@Pekka,你就是那个人-你总是帮我解答问题。谢谢是的,这篇文章是正确的。我不知道为什么mattbasta会拿到支票,太棒了!非常感谢-这非常有用!我一定会检查验证器的,谢谢@这就是为什么我说“你不能用编程的方式来做这件事”。有太多的事情会影响代码的功能,所以你最好能期待的是在将实际代码传递给人工编辑器之前,先扫描明显的东西。@mattbasta这很有趣,我没有仔细阅读你的文章。虽然我看到了一些Mozilla开发者对Defcon上关于黑客攻击Mozilla插件的演讲的反应,但基本上他们对此不屑一顾,并表示这不是他们的错,他们拒绝了限制插件访问权限的想法。我现在正在使用chrome。@The Rook:我不能代表其他开发者说话,但我们的位置是addons.mozilla.org是加载项的“干净地带”。我们运行一个基于软件的清洁度检查,然后在插件被接受之前,由一个实际的人进行一次细致的检查。诚然,Chrome扩展天生就更安全,尽管您可以使用Chrome构建的扩展类型要复杂得多。另外,作为记录,我也运行Chrome;)@mattbasta插件带来的安全问题对于很多软件包来说都是一个大问题。起初我想