phpbar.de logo

Mailinglisten-Archive

Re[2]: [php] OT Frage zu Apache

Re[2]: [php] OT Frage zu Apache

Daniel Lorch php_(at)_phpcenter.de
Thu, 30 May 2002 16:43:55 +0200


Hi,

>> Apache 1.3.x unterstützt das auch. SuEXEC oder cgiwrap für
>> "cgi-scripts" und für PHP gibts nen cgiwrap-Patch. Funktioniert
>> wunderbar bei uns :)

> php als modul oder cgi ?

_CGI_wrap. Rate mal :)

Ein Script wie <?php passthru("id"); ?> sieht dann etwa so aus:

  http://tsunamihost.ch/id.php

Das Script wird also im richtigen User ausgeführt - nicht als
Apache-User.

>> Also known as safe_mode.
> was genau macht denn alles dieser safe_mode ?
> mir schien es doch etwas anders, z.b. beschraenkung auf bestimmte
> verzeichnisse - das ist etwas anderes als file-permission-checking ...

Der safe_mode ist ein sehr schwacher Sicherheitsmodus auf PHP-Ebene.

Das Dilemma: mod_php läuft als Apache-User. So könnte jedes Script auf
die Dateien der anderen User zugreifen. Das ist besonders übel, da
viele PHP in Verbindung mit MySQL benutzen und man so die
MySQL-Passwörter der anderen ausspionieren könnte (diese stehen ja in
Dateien). Mit diesen Zugangsdaten könnte man problemlos die
Benutzerdaten der anderen Kunden löschen - AFAIK sogar ohne dabei
erwischt zu werden, denn MySQL loggt nur Host und User (also so oder
so 'localhost' und das MySQL-Login, welches wir ja geklaut haben).

Die "Lösung": PHP sorgt dafür, dass ein Script nur Dateien öffnen
kann, die die gleiche User-ID besitzen, wie der User, dem das Script
gehört. Das funktioniert einigermassen gut, aber ist alles andere als
sicher.

Probleme bereiten beispielsweise File-Uploads, da die Dateien als
Apache-User erstellt werden und folglich der Benutzer nach dem
hochladen nicht mehr darauf zugreifen kann :) Eine paradoxe
Situation.

Ausserdem sind sämtliche Programme, die über beliebige 'exec'
Funktionen ausgeführt werden, logischerweise NICHT diesen
Restriktionen unterstellt. Würde es also einem User gelingen, z.B.
'cat' anzusteuern, wäre der gesamte safe_mode wieder ausgehebelt.

Das gleiche gilt für die Datei-lese/schreib-Funktionen von MySQL
(LOAD INFILE etc..), denn MySQL ist ebenfalls nicht von dieser
Beschränkung betroffen.

Weshalb benutzen viele Hoster noch mod_php, fragst Du Dich vielleicht.
Es hat verschiede Gründe:

1. Einige Hoster haben noch nie etwas vom safe_mode gehört
2. Alternativen, wie CGI, leiden unter einer höheren Latenz (weil bei
   jedem Script-Aufruf das PHP-Binary geladen werden muss, während
   mod_php immer schon im Speicher bereit steht).

Ich hoffe, Du konntest mir folgen. Da Du selbst Hoster (mit
Schwerpunkt "Sicherheit") bist, wundert es mich eigentlich, dass Du
Dich noch nicht mit dieser Thematik auseinander gesetzt hast :)
Ich würde das auf jeden Fall nachholen.

Das Manual hilft Dir dabei, aber das meiste müsste Dir sowieso klar
sein, da Du die Sicherheitskonzepte ja zu verstehen scheinst:

  http://ch.php.net/manual/en/security.php

-daniel


php::bar PHP Wiki   -   Listenarchive