2012-11-05 7 views
5

Ich habe einen Webserver in node.js geschrieben, es dient ziemlich genau dem Benutzer mit statischen Dateien. Um PHP-Unterstützung hinzuzufügen, dachte ich, ich könnte einfach PHP herunterladen und PHP.exe die Datei geben. Das funktioniert und wird ausreichen, wenn es von einem einzelnen Benutzer verwendet werden soll. Für eine Umgebung, in der mehrere Benutzer ihre Website auf dem Server hosten, würde dies jedoch ein großes Sicherheitsproblem mit sich bringen. Man könnte ein PHP-Skript verwenden, um zu tun, was auch immer er/sie mit irgendeiner der anderen Webseiten oder sogar dem gesamten Server wünschen würde.Verwenden von node.js zum Ersetzen von Apache/nginx und Ausführen von PHP-Sicherheit

Oh habe ich erwähnt, dass es ein Windows-Server ist?

Anyways, also was ich will, ist, einige Berechtigungen zu erhalten, die arbeiten, um das PHP-Skript innerhalb eines spezifischen Verzeichnisses zu behalten. Ich denke in Richtung der Erstellung eines Benutzers für jede Website, auf der ich die entsprechenden Berechtigungen anwenden und dann bei der Ausführung von php.exe mit etwas wie 'run as' (vorausgesetzt, es ist möglich). Gibt es noch andere Möglichkeiten, mein Ziel zu erreichen? Und wenn ja, wären sie besser? Warum?

Auch wenn Sie interessiert sind, sieht mein Code wie: http://pastebin.com/gZjN1mnj

auch bewusst, dass ich bin, dass _POST, $ $ _SERVER, $ _COOKIE, $ _SESSION etc. sind alle fehlen, wenn mein Server, aber ich habe schon darüber nachgedacht, wie man das beheben kann und hatte einen erfolgreichen Test damit.

Jetzt fühle ich bereits die Antworten: Warum zum Teufel würdest du das tun? ODER nicht, Apache/Nginx sind besser, etc. etc. Betrachten Sie es als ein Lernprozess, ich war nur daran interessiert, ob ich es bekommen könnte, um wirklich zu arbeiten ^^

Vielen Dank.

+0

Sie könnten versuchen, einen php-fcgid Server mit [php-fpm] einzurichten (http://php.net/manual/en/install.fpm.php). –

+1

So scheint es, dass Sie Chroot für Windows wollen, so werfen Sie einen Blick auf http://serverfault.com/questions/161507/is-there-a-windows-equivalent-to-chroot – Nelson

+0

Bitte aktualisieren Sie Ihre Pastebin-Link, es funktioniert nicht ! :) –

Antwort

4

Wir gratulieren dem gemischten Tasche franken Plattform, um Ihre Entwicklung :)

zu Linux wechseln Verwendung process.setuid

Node.js ein großer Webserver ist, so kann ich die Beschwerde sehen. Du schwimmst stromaufwärts, indem du sowohl node als auch php auf Windows ausführst. Wenn Sie die Kontrolle haben, würde ich zu Linux wechseln.

Wenn Sie in Linux ausgeführt haben, hat Node eine eingebaute Funktionen process.setguid und process.setuid Sie müssen root sein, um diese auszuführen, aber ein node.js Programm könnte als root spawn einen Node-Prozess für jeden Benutzer ausführen, Anschließend wird der gesamte Verkehr an die untergeordneten Knotenprozesse weitergeleitet, die an bestimmte Benutzer gebunden sind.

Haben Sie eine bestimmte php.ini für jeden Benutzer

Sie können PHP-Safe-Modus, base_dir und andere ini-Befehle verwenden, um zu versuchen und Gefängnis php an einen Baum bestimmten Verzeichnisses. Dies ist flockig und unvollständig und viele dieser Features wurden in den neuesten Versionen aufgrund von Fehlern und Wegen umgangen. Aber es ist trivial, eine Ini-Datei mit Ihrem PHP-Kommandozeilen-Aufruf zu übergeben.

Verwendung von Dritt pary RUNAS Dienstprogramm

wirklich Um die Benutzersicherheit in den Fenstern haben Sie so etwas wie AutoIT RunAs laufen müssen werde http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm

In Bezug auf die normale runas Gegensatz Befehl diese lässt Geben Sie ein Passwort an, damit es von Ihrem Knotenprozess aus ausgeführt werden kann.

Verwandte Themen