2016-11-09 2 views
1

MQTT 프로토콜을 사용하여 인스턴트 메시징 응용 프로그램을 만들었습니다. 보낸 시간 (클라이언트 시간이 아닌 서버 시간)과 같은 페이로드의 메시지에 대한 추가 데이터를 추가하고 서버 측 페이로드의 종류를 제공하고 싶습니다.서버 측에서 mqtt 메시지 페이로드를 어떻게 위생 처리합니까?

이 작업을 수행하려면 메시지 발신자와 브로커 로컬 컴퓨터의 메시지 수신자간에 수퍼 유저 권한이있는 타사 클라이언트를 추가하는 것이 좋습니다. 또는 더 좋은 아이디어가 있습니까?

나는 메시지 브로커로 EMQTT를 사용하고 있습니다.

+0

제 3 자 클라이언트가 메시지에서 수행 한 주제가 변경된 경우에만 요청할 수있는 유일한 방법입니다. 당신이 원하는 것은 mosca와 같은 서버 측 걸이가있는 중개인입니다. 나는 당신의 대답을 위해 – hardillb

답변

1

직접적인 피어 투 피어 트래픽 (필터링 및 위생 처리없이)이있는 순수한 보안보기에서 위험한 생각처럼 들립니다. (적어도 인터넷 - 오브 - 사물 영역에서 나는 분명히 반대 할 것이다.)

왜? 클라이언트가 제어 할 수 없기 때문에 (예 : 해커가 다시 작업 할 수 있음) 다른 클라이언트의 수신 측 보안 허점을 악용하는 트래픽을 주입합니다.

그래서 서버 측에서 살균 처리하는 것은 좋은 생각입니다.

클라이언트에서 메시지를 게시하는 데 사용하는 하나의 (인바운드) 항목과 클라이언트가 메시지를 구독하는 데 사용하는 다른 (아웃 바운드) 항목이 있습니다. 서버 측 구성 요소는 인바운드 주제에서 메시지를 읽고 위생 처리 한 다음 아웃 바운드 주제에 게시합니다.

변경된 MQTT 페이로드를 쉽게 추가 할 수 있습니다. 호환되지 않는 방식으로 페이로드를 갱신하는 경우, 새로운 인바운드 주제를 도입하고 이전 인바운드 주제도 유지하십시오. 이를 통해 전환 단계에서 이전 클라이언트와 새 클라이언트를 지원할 수 있습니다.

+0

탱크를 가지고 있는지를 알기 위해 EMQTT에 익숙하지 않다. 나는 이렇게 생각하지만, 성능 및 고 가용성 문제는 어떻습니까? 브로커 플러그인을 사용하거나 생성하는 방법과이 메커니즘을 어떻게 비교합니까? – masoud

+0

브로커 플러그인 : 괜찮 았지만 경험이 없습니다. 고 가용성 : 예 : 동일한 서버에 "서비스 측 구성 요소"를 배포하면 훨씬 복잡한 점이 없습니다. 성능 : 예, 다소 저하되지만 IMHO는 중요하지 않습니다. 브로커 플러그인이 프로세스 내에서 실행되는 경우 IMHO를 선호 할 수 있습니다. –

관련 문제