我该怎么办,或者我应该使用被认为是“危险”的php函数?

时间:2011-06-01 07:46:15

标签: php

几天前,我参加了一个研讨会,他们正在谈论“危险”的PHP功能。然而,他们没有说我们应该使用它们。他们将eval()preg_match()exec()等命名为。

虽然我不使用它们,或者有时候我不经常使用它们。使用这些功能被认为是不好的做法吗?即使我知道我在哪里使用它们,用户也无法联系到它?

修改 对于preg_match()问题,请查看: preg_match() security hole

6 个答案:

答案 0 :(得分:11)

如果您不采取措施,所有这些方法基本上都允许在您的系统上运行注入的代码。如果你在不知道危险的情况下使用它们,你有可能在脚下射击。如果你完全了解自己在做什么,除了使用这种方法别无选择,那么在任何情况下你都无法做到。

这个问题在PHP中有一个非常全面的可利用函数列表

Exploitable PHP functions

答案 1 :(得分:2)

没有“危险”功能。有

  • 没有正确处理用户输入的邋program程序员
  • 在系统级别不保护其服务器的系统管理员

如果您没有采取足够的安全措施,每个PHP功能都可能是“危险的”。这包括“回声”(XSS),“邮件”(主要注入),文件功能(例如readfile(/ etc / passwd)等)。

答案 2 :(得分:1)

真的是味道问题。它真的只是有足够的绳索来悬挂自己。只要您100%确定没有用户可以直接输入evalexec语句,您可能没问题,但很难说不应该有不同的情况,更安全的方式来做你正在尝试的事情。

答案 3 :(得分:1)

如果您的服务器遭到入侵,可能是来自安全性较差的表单或include()调用的代码注入攻击,那么一些很少使用但非常强大的php函数会让攻击者通过exec对整个系统进行过多控制( ),所以你可以在你的ini文件中完全阻止这些功能。

引用php.ini

  

;此指令允许您禁用某些功能以确保安全性   ; reason.It收到以逗号分隔的功能列表   ;名称。该指令 NOT 受安全模式是否影响   ;打开或关闭。   disable_functions =

修改 JohnP的链接列出了你应该警惕的所有功能

答案 4 :(得分:1)

以下是作者询问eval为何危险的帖子: http://blog.joshuaeichorn.com/archives/2005/08/01/using-eval-in-php/,请阅读答案,这是另一篇有趣且简短的文章: http://www.hardened-php.net/suhosin/a_feature_list:eval_black_and_whitelist.html

恕我直言,问题在于如果你使用像eval或exec这样的函数,你需要100%知道哪些varable传递给它们。如果exec可以在您的操作系统中“嵌入”,它可能是真正的狡猾。

  • exec-Personaly我只将exec用于不依赖于用户输入或不受信任数据的作业。
  • eval-使代码难以理解,难以开发并通过使用它,经过一段时间后你可以找到一个真正的问题来找到潜在的问题。它的接缝也难以测试......
  • 我知道的preg_match唯一的问题是:http://blog.php-security.org/archives/76-Holes-in-most-preg_match-filters.html

此致 汤姆

答案 5 :(得分:0)

嗯......我认为preg_match不是那么“危险”。另一方面evalexec有点不好。特别是exec甚至在托管服务器上甚至被禁止,因为它增加了巨大的安全风险。