5

node.jsで記述されたWebサーバーがあります。これは、静的ファイルをユーザーに提供するだけです。PHPサポートを追加するには、PHPをダウンロードしてPHP.exeにファイルを与えるだけでよいと思いました。これは機能し、1人のユーザーが使用する場所であれば十分です。ただし、複数のユーザーがサーバー上でWebサイトをホストする環境では、セキュリティ上の大きな問題が発生します。PHPスクリプトを使用して、他のWebサイトやサーバー全体でやりたいことを何でも行うことができます。

ああ、私はそれがウィンドウズサーバーだと言いましたか?

とにかく、私が欲しいのは、phpスクリプトを特定のディレクトリ内に保持するために機能するいくつかの権限を取得することです。私は、適切なアクセス許可を適用するWebサイトごとにユーザーを作成する方向で、「run as」などを使用してphp.exeを実行する場合よりも考えています(可能な場合)。目標を達成するための他の方法はありますか?もしそうなら、彼らはより良いでしょうか?なぜそうなのか?

また、興味があれば、私のコードは次のようになります:http: //pastebin.com/gZjN1mnj

また、サーバーの使用時に$ _POST、$ _ SERVER、$ _ COOKIE、$ _ SESSIONなどがすべて欠落していることも認識していますが、それを修正する方法をすでに考えており、1回のテストに成功しました。

今、私はすでに反応を感じています:なぜあなたはそれをするのですか?または、そうではない、apache / nginxの方が優れている、などなど。これを学習プロセスと考えてください。すべてを実際に機能させることができるかどうかだけに興味がありました^^

ありがとうございました。

4

1 に答える 1

4

混合バッグフランケンプラットフォームの開発おめでとうございます:)

Linux に切り替えて process.setuid を使用する

Node.js は優れた Web サーバーなので、その魅力はわかります。Windows で node と php の両方を実行することで、上流に泳いでいます。制御できる場合は、Linuxに切り替えます。

Linux で実行している場合、Node には組み込み関数 process.setguid および process.setuid があります。これらを実行するには root になる必要がありますが、node.js プログラムは root として実行でき、各ユーザーのノード プロセスを生成し、その後自分自身を刑務所に入れ、特定のユーザーに投獄されている子ノード プロセスにすべてのトラフィックをルーティングします。

ユーザーごとに特定の php.ini を用意する

php セーフ モード、base_dir、およびその他の ini コマンドを使用して、php を特定のディレクトリ ツリーに投獄しようとすることができます。これは不安定で不完全であり、これらの機能の多くは、バグや回避策のために、最新のリリースで非推奨または削除されています。しかし、php コマンドライン呼び出しで ini ファイルを渡すのは簡単です。

サードパーティの RUNAS ユーティリティを使用する

Windows で実際にユーザー セキュリティを確保するには、autoIT RunAs http://www.autoitscript.com/autoit3/docs/functions/RunAs.htmのようなものを実行する必要があります。

通常の runas コマンドとは対照的に、このコマンドではパスワードを指定できるため、ノード プロセスから実行できます。

于 2012-12-06T20:32:35.340 に答える