Mailinglisten-Archive |
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