2012-11-12 7 views
3

저는 PHP와 MySQL 데이터베이스를 사용하여 웹 사이트를 구축하고 있습니다. 이제 웹 사이트에 로그인/등록 기능이 있으며 벽이있는 프로파일을 방문 할 수 있습니다. 같은 웹 사이트에서 나는 웹 소켓을 사용하여 커다란 채팅 응용 프로그램을 만들고 싶습니다. 이 채팅에는 중간 규모 그룹 (+/- 25 명)의 대화방 (수천 개까지 실행 가능)이 동적으로 확장되는 양이 있어야합니다.http 요청을 사용하여 PHP 옆에 node.js를 사용하는 것이 안전합니까?

나는 웹 소켓을 실행하기 위해 node.js를 고려해 왔지만 들어오는 메시지와 브로드 캐스팅을 처리하기 위해 node.js 만 사용하려고합니다. 또한 PHP를 사용하여 들어오는 메시지를 데이터베이스에 저장하려고합니다. http://docs.nodejitsu.com/articles/HTTP/clients/how-to-create-a-HTTP-request에 설명 된대로이를 처리하기 위해 node.js 서버 파일에서 http 호출을 사용하고 싶습니다. 또한 HTTP 요청을 사용하여 사용자의 속성 (예 : 이름 및 프로필 사진)을 가져와 동일한 채팅방의 다른 사용자에게 표시 할 수 있습니다. 나는이 클라이언트 측을 처리하고 싶지 않다. 사용자가 다른 누군가 인 것처럼 쉽게 할 수 있기 때문이다.

PHP 웹 사이트와 node.js 서버는 모두 localhost에서 실행됩니다. 웹 사이트는 127.0.0.1:80에서 실행되고 서버는 127.0.0.1:1337에서 실행됩니다.

제 질문은이 접근 방식을 저장하는 것입니까? node.js 서버에서 데이터베이스로 데이터를 보내고 받기 위해 http 요청을 수행 할 때 보안 위험이 있습니까? PHP 웹 사이트 옆에 node.js를 실행하는 것이 좋습니까? 아니면 node.js에 웹 사이트를 구축해야합니까? 다른 대안이 있습니까?

답변

2

이 접근 방법은 안전한가요?

확실히. 엄밀히 말하면, 확실합니다. 어떤 기술보다도 개별적으로 안전하지 않습니다. 그러나 아키텍처가 조금 더 복잡해지기 때문에 인적 오류와 버그 또는 보안 문제가 발생할 수 있습니다. 그러나 그것은 기술 그 자체보다는 인간과 복잡성에 관한 것입니다.

데이터베이스에서 데이터를 보내거나 받기 위해 node.js 서버에서 http 요청을 수행 할 때 보안 위험이 있습니까?

다른 어떤 백엔드 기술도 아닙니다. 웹 서버 뒤에 앉아 데이터베이스에 액세스하거나 액세스하지 않을 수도있는 코드를 실행하고 응답을 반환합니다. 많은 프로덕션 웹 사이트에서 보안 문제없이 node.js를 실행합니다.

node.js를 PHP 웹 사이트 옆에서 실행하는 것이 좋습니까? 아니면 웹 사이트를 node.js에서만 구축해야합니까?

대답하기가 어렵습니다. 전반적으로 더 간단하고 유지 보수가 잘되는 패턴은 한 곳에서 기술을 유지하는 것입니다. 그러나 응용 프로그램이 커짐에 따라 실제로 독립형 부품을 제거하고 자체적으로 최선의 방법으로 구현하는 것이 일반적입니다.일반적으로 이것은 성능과 관련이 있으며, 높은 트래픽 시스템과 낮은 트래픽 시스템을 기술 자체의 기능과 분리합니다.

하지만 일반적으로 역할이 다른 여러 서버가있는 경우이 기능이 작동합니다. 소규모 프로젝트의 경우 일반적으로 가치가 낮습니다.


귀하의 질문에 대한 답변이 될지 모르지만 간단히 말해서 : 그것은 본질적으로 나쁘지 않습니다. 그것은 달려있다.

+0

그런 다음 하나의 기술에서 작동하도록 많은 코드를 다시 작성하거나 PHP를 계속 사용하고 그 옆에 node.js 서버를 구축하여 더 많은 버그/트래픽을 감수해야한다는 점을 고려해야합니다. 대안으로 AJAX를 이용한 긴 폴링이나 짧은 폴링이 있지만 웹 소켓은 훨씬 더 나은 접근 방법입니다. 답변 주셔서 감사합니다. –

+0

문제 없습니다. 그것에 대해 생각한 후에 나는 좋은 프로그래머가 문제 나 합병증없이 잘 돌아갈 수 있다고 결론을 내릴 것입니다. 여기에 명확한 정답은 없습니다. –

+0

그렇다면 node.js를 배우는 데 너무 많은 시간이 걸리므로 PHP와 node.js를 계속해서 사용하고 PHP로 이미 경험이 풍부합니다. –

0

Node.js와 PHP/Apache를 혼합하면 본질적으로 안전하지 않다고 생각하지 않습니다. 그것은 마치 컴퓨터에서 여러 프로그램을 실행하는 것과 같습니다. 자신의 공간을 갖고 있으며, 자신의 포트를 듣고 직접 대화를 나누지 않습니다.

하지만 저는 개인적으로 서버 리소스 (CPU가 얼마나 빠르며 얼마나 많은 RAM이 필요합니까?)에 더 관심이 있습니다. 하나의 플랫폼에서만 웹 사이트를 구축하는 것이 더 효율적입니다. 그러나 당신이 무엇을 만들고 있는지에 따라, 둘 다를 가질 수도 있습니다.

내가 본 벤치 마크에서 Node.js는 Apache보다 더 많은 리소스를 필요로합니다. 그러나 Node.js는 특정 애플리케이션에서 매우 빠릅니다.

+0

웹 사이트는 나중에 VPS에서 실행됩니다. 이것은 좀 더 비싼 VPS 서비스를 얻어야 만한다는 것을 의미 할 수도 있고, node.js에서 웹 사이트를 실행하기 위해 많은 코드를 다시 작성해야 할 것입니다. 나는 또한 phpwebsockets를 고려해 봤지만 그렇게 할 수 없었다. 그러나 그것이 안전하지 않다는 것을 듣기 좋게 : AJAX 사용을 고려해 봤지만 node.js가있는 AJAX를 사용하면 안전하지 않습니다. http://stackoverflow.com/questions/5373987/how-to-use -jquery-ajax-calls-with-node-js, 그래서 나는 HTTP 요청이 안전하지 않은지 궁금해했다. 답변 주셔서 감사합니다. –

+0

AJAX는 안전하지 않습니다 ... 교차 도메인 아약스는 해커가 사용할 가능성이 있지만 브라우저가 데이터를 교환하는 방법에 대해 구체적이고 명시적인 계약없이 허용하지 않습니다. [CORS 참조] (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing). –

+0

AJAX는 주소 표시 줄에 URL을 입력하고 Enter 키를 누를 때와 마찬가지로 HTTP 요청입니다. AJAX와 Node.js에 대해서는 안전하지 않은 것이 하나도 없습니다. 두 가지를 혼동하고 있습니다. 교차 도메인 AJAX는 게시물에서 언급 한 것입니다. – pixelfreak

0

PHP와 nodejs를 연계하여 실행하기 때문에 다른 CGI 백엔드보다 안전합니다. 아무도 언급하지 않은 한가지는 Nginx가 아직 WebSocket을 지원하지 않기 때문에 PHP 80 응용 프로그램과 WebSocket을 사용하는 nodejs 응용 프로그램을 모두 지원하려면 Nginx를 포트 80에 바인딩하는 것이 효과가 없을 것입니다.

내 솔루션 여기 내 대답을 참조하십시오 nginx vs node-http-proxy

편집 : 버전 1.3.13로, Nginx에 웹 소켓을 지원합니다. Nginx는 이제 제 제작 스택의 포트 80에서 정당한 자리를 되찾았습니다.

+0

이 기사는 http://webandphp.com/IntegratingNode.jswithPHP에서 프로토콜을 전환하면 Nginx에서 웹 소켓이 가능하다고 말하고 테스트하지는 않았습니다! – Richard

+0

@Richard 예, 버전 1.3.13 이상에서는 웹 소켓이 지원되므로 이제 Nginx를 Nodejs 앱과 PHP 앱에서 역방향 프록시로 사용합니다. – srquinn

관련 문제