3

PHP と mySQL データベースを使用して Web サイトを構築しています。Web サイトにログイン/登録機能が追加され、壁のあるプロファイルにアクセスできるようになりました。同じ Web サイトで、WebSocket を使用して大きなチャット アプリケーションを構築したいと考えています。このチャットは、中規模のグループ (+/- 25 人) の動的に拡張する数のチャット ルーム (数千に達する可能性があります) をホストする必要があります。

node.js を使用して websocket を実行することを検討していますが、受信メッセージとブロードキャストを処理するためにのみ node.js を使用したいと考えています。さらに、受信メッセージを PHP を使用してデータベースに保存したいと考えています。http://docs.nodejitsu.com/articles/HTTP/clients/how-to-create-a-HTTP-requestで説明されているように、これを処理するために node.js サーバー ファイルで http 呼び出しを使用したいと考えています。また、http リクエストを使用してユーザーのプロパティ (名前やプロフィール写真など) を取得したいので、これらを同じチャットルーム内の他のユーザーに表示できます。ユーザーは簡単に他人になりすますことができるため、このクライアント側を処理したくありません。

PHP Web サイトと node.js サーバーの両方が localhost で実行されます。Web サイトは 127.0.0.1:80 で実行され、サーバーは 127.0.0.1:1337 で実行されます。

私の質問は、このアプローチは保存されますか? node.js サーバーで http リクエストを実行してデータベースからデータを送受信する場合、セキュリティ上のリスクはありますか? PHP Web サイトの隣で node.js を実行するのは良い考えですか、それとも純粋に node.js で Web サイトを構築する必要がありますか? 他の選択肢はありますか?

4

3 に答える 3

2

このアプローチは安全ですか?

もちろん。確かに、技術的にはそうです。個々のテクノロジーよりも危険ではありません。ただし、アーキテクチャが少し複雑になり、人的エラーやバグ、セキュリティの問題がわずかに増える可能性があります。しかし、それはテクノロジーそのものよりも、人間と複雑さに関するものです。

node.js サーバーで http リクエストを実行してデータベースからデータを送受信する場合、セキュリティ上のリスクはありますか?

いいえ、他のどのバックエンド テクノロジーよりも多くはありません。Web サーバーの背後にあり、データベースにアクセスする場合とアクセスしない場合があるコードを実行し、応答を返します。多くの本番 Web サイトは、セキュリティの問題なしで node.js を実行しています。

PHP Web サイトの隣で node.js を実行するのは良い考えですか、それとも純粋に node.js で Web サイトを構築する必要がありますか?

それは答えるのが難しいです。全体的にシンプルで保守しやすいパターンは、物事を 1 つの場所とテクノロジーにまとめすぎることだと思います。しかし、アプリケーションが成長するにつれて、スタンドアロンの部分を削除して、独自の最善の方法で独自に実装することは実際には非常に一般的です。通常、これは技術自体の機能と同様に、トラフィックの多いシステムをトラフィックの少ないシステムから分離することで、パフォーマンスに大きく関係しています。

ただし、これは通常、異なる役割を持つ複数のサーバーがある場合に発生します。小規模なプロジェクトでは、通常、価値は低くなります。


それがあなたの質問に答えるかどうかはわかりませんが、要するに、本質的に悪いわけではありません. 場合によります。

于 2012-11-12T23:52:24.020 に答える
0

私は本番用に PHP と nodejs を並行して実行していますが、他の CGI バックエンドと同じくらい安全です。誰も言及していないことの 1 つは、Nginx はまだ WebSockets をサポートしていないため、Websocket を使用して PHP アプリケーションと nodejs アプリケーションの両方をサポートする場合、Nginx をポート 80 にバインドすることはできません。

私の解決策については、こちらの回答を参照してください: nginx vs node-http-proxy

編集: バージョン 1.3.13 の時点で、Nginx は Web ソケットをサポートしています。Nginx は現在、本番スタックのポート 80 の正当な場所を取り戻しています。

于 2012-11-13T18:10:39.693 に答える
0

Node.js と PHP/Apache を混在させることで、本質的に安全でないものはないと思います。コンピューターで複数のプログラムを実行するのと同じように、それらは独自のスペースを持ち、独自のポートをリッスンし、互いに直接通信しません。

しかし、個人的にはサーバー リソース (CPU の速度は? RAM の容量は?) の方が気になります。1 つのプラットフォームだけで Web サイトを構築する方が確実に効率的です。ただし、構築するものによっては、両方を使用しても問題ない場合があります。

私が見たベンチマークから、Node.js は Apache よりも多くのリソースを消費します。しかし、Node.js は特定のアプリケーションでは非常に高速でもあります。

于 2012-11-12T23:43:38.887 に答える