php disable_functions

aqua

Registered User
Hallo,

ich habe in der php.ini generell einige Funktionen deaktiviert:

disable_functions = system,readfile,exec,mail

Das funktioniert auch prima -> Warning: exec() has been disabled for security reasons in ...

Dann habe ich versucht per Apache-Konfiguration mit

<Directory "/home/path/to/dir">
php_admin_value disable_functions system,readfile,exec
</Directory

für dieses bestimmte Verzeichnis die mail() Funktion zu erlauben. Das funktioniert allerdings nicht, es kommt weiter die Fehlermeldung: Warning: exec() has been disabled for security reasons in...

phpinfo() in dem Verzeichnis gibt auch das richtige aus:

Local Value Global Value
disable_functions system,readfile,exec system,readfile,exec,mail

Woran kann es denn noch liegen das die Local Value nicht berücksichtigt wird? In anderen Sachen funktionierts auch (safemode zB, der wird dann speziell für das Verzeichnis deaktiviert)
 
Nein,

genau das was ich hier gemacht hat funktioniert auf einem anderen Server mit der identischen Software, und in der Konfiguration konnte ich auch keine Unterschiede feststellen :confused:
 
Soweit ich weiss, kann du fuer das Verzeichnis auch "Honolulu" eintragen, was dann auch angezeigt wird, aber trotzdem nichts aendert (wie du schon festgestellt hast)

Sicher bin ich mir nicht, aber eventuell geht das, wenn man PHP als cgi laufen hat.
 
für dieses bestimmte Verzeichnis die mail() Funktion zu erlauben. Das funktioniert allerdings nicht, es kommt weiter die Fehlermeldung: Warning: exec() has been disabled for security reasons in...
Passt irgendwie nicht zusammen...
 
War auch ein Tippfehler ;)

Trotzdem weiß ich das man normalerweise für einzelne Verzeichnisse jede php.ini Variable einzeln bestimmen kann.

Bis auf die disable_functions scheint das auch mit allen zu funktionieren, leider ist grade das die wichtigste :rolleyes:
 
disable_functions "" php.ini only
Das ist ein Zitat der Seite. Und die sollte das wissen ;)

[edit] ja, ich habe gerne recht :D
 
Last edited by a moderator:
Ist das denn vielleicht neu?

Ich weiß ja das es bis vor meinem PHP-Update noch ging.. großer Mist.

Gut, stelle ich die Frage anders: Kann man den Schwachsinn irgendwie umgehen? ;)

Es muss doch möglich sein bestimmte Funktionen nur für bestimmte Verzeichnisse freizugeben..
 
Wie bindest du php ein? Bei cgi oder fast-cgi kannst du für unterschiedliche Verzeichnisse unterschiedliche php.inis benutzten.
Wenn es Dir immernoch um den Mailversand geht, könntest Du die Mailfunktion nachbauen.
http://www.php-faq.de/q/q-mail-unix.html
Da er den Mailversand global deaktivieren will sollte logischerweise so Zeug wie popen, imap_mail usw auch in der disable_functions Liste stehen. So ein Workaround ist IMHO keine Lösung sondern nur ausnutzen einer selbstgeschaffenen Sicherheitslücke.
 
HornOx said:
Da er den Mailversand global deaktivieren will sollte logischerweise so Zeug wie popen, imap_mail usw auch in der disable_functions Liste stehen. So ein Workaround ist IMHO keine Lösung sondern nur ausnutzen einer selbstgeschaffenen Sicherheitslücke.
stimmt...
aqua said:
disable_functions = system,readfile,exec,mail
stimmt...

:D :rolleyes: Gruß flyingoffice
 
flyingoffice said:
In diesem Forum darf man nicht's unfreundliches bzw zynisches schreiben, deswegen scheige ich bei IMHO offensichtlichen/trivialen Sicherheitslücken einfach. Nicht wirklich nett aber funktioniert :D. Keine Ahnung ob das die anderen das genau so machen oder ob denen sowas erst gar nicht auffällt...
server4downs hat übrigends eine recht umfangreiche disable_functions veröffentlicht:
(Könnte mal eine Aktualisierung vertragen)
Wobei man PHP IMHO dennoch mit cgi oder ähnlichem absichern sollte.
 
Hmm, vielleicht muss ich zugeben das mail() ein sehr ungünstiges Beispiel war ;)

Lässt sich ja leicht umgehen indem man den sendmail_path pro Directory/Vhost ändert, der ist ja nicht php.ini-only.

Für das eigentliche Problem fällt mir aber nach wie vor keine Lösung ein, laut php wäre es wohl zu performanceraubend wenn man disable_functions per php_admin_value erlauben würde..
 
Back
Top