如果我允许用​​户输入PHP,我应该禁用哪些功能?

时间:2012-02-24 19:07:38

标签: php

假设我希望我的用户允许在我的页面上创建PHP脚本,我会将这些页面保存在目录中。我应禁用哪些功能不被黑客攻击?或者我该怎么办?

首先,我不允许人们通过PHP文件上传文件(不知道怎么做),还有什么?

5 个答案:

答案 0 :(得分:3)

在这种情况下,我不会让他们执行PHP文件,尽管可能通过禁用数千个函数来运行它们。

对于最好允许用户编写 。解析器会读取它并相应地执行它。大多数编程语言功能都可以在中实现。了解如何做到这一点。有循环条件语句等。

答案 1 :(得分:1)

你不能通过将单个函数列入黑名单来使PHP成为一种安全的语言 - 有太多可以恶意使用的。

答案 2 :(得分:0)

我没有在这个堆栈交换网站中重新输入所有有用的内容,而是为您提供了一个链接先生:https://security.stackexchange.com/questions/1382/disable-insecure-dangerous-php-functions

还有一些功能:

“apache_child_terminate,apache_setenv,define_syslog_variables,escapeshellarg,escapeshellcmd,eval,exec,fp,fput,ftp_connect,ftp_exec,ftp_get,ftp_login,ftp_nb_fput,ftp_put,ftp_raw,ftp_rawlist,highlight_file,ini_alter,ini_get_all,ini_restore,inject_code,mysql_pconnect, openlog,通路,php_uname,phpAds_remoteInfo,phpAds_XmlRpc,phpAds_xmlrpcDecode,phpAds_xmlrpcEncode,POPEN,posix_getpwuid,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,了shell_exec,系统日志,系统,xmlrpc_entity_decode”

答案 3 :(得分:0)

我会反过来做。我会向用户提供他们可以使用的PHP子集。

然后,您只需要验证他们发送的内容是否包含在该安全列表中。

此外,您可以创建自己的功能来替换一些危险的功能。

答案 4 :(得分:-1)

  • 文件处理(fopenfclosefwrite等。)
  • 文件浏览(opendirreaddir等)
  • 执行(execshell等)
  • 远程文件访问(allow_url_include php.ini指令)

其他任何你可能认为有害的东西。把自己置于“破解者”的位置,用什么方法来查看你的系统或环境,并禁止任何你认为有害的东西。