2014-11-01 2 views
0

제 질문 인 here에 이어 서버 컴퓨터에서 일종의 메시지 파싱을 구현하려고합니다.응용 프로그램 네트워크 프로토콜을 구현할 때의 보안 문제

현재 메시지는 다음과 같습니다

int _header_signature; 
int _offset_a; 
int _offset_b; 
int _size_a; 
int _size_b; 
wchar_t stuff[_size_a]; 
wchar_t stuff2[_size_b]; 
int _footer_signature; 

내가 헤더와 크기를 디코딩하여, 작동하는 몇 가지 코드를 얻을 수 및 I 전체 메시지를받은 이상의 출원이 있는지 알고. 그러나 악의적 인 사용자가 의도적으로이 메시지를 변경하고 내 컴퓨터를 파괴하는 것을 막을 수있는 방법은 무엇입니까? 예 : 크기 값 중 하나를 변경하거나 내 메시지보다 큰 값으로 오프셋합니다.

받은 메시지가 무엇이든 내 서버를 안전하고 견고하게 만들려면 어떻게해야합니까?

답변

-2

그냥 데이터

http://en.wikipedia.org/wiki/Serialization 다음 오프셋이 유효한지 확인을에는 직렬화.

+0

데이터가 직렬화되어 전송되지만 오프셋을 확인하려면 어떻게해야합니까? 유효하다는 것을 어떻게 알 수 있습니까? –

+0

두 배열의 크기를 알 수 있습니다. 왜 그 값이 한계에 있는지 확인하지 마십시오 –

+0

두 배열의 크기를 어떻게 알 수 있습니까? 이러한 값은 조작 될 수 있습니다. (나는 당신이 이상하게 여기는 경우에 downvoted 사람이 아니었다) –

0

아무것도 받은 데이터의 유효성을 검사해야합니다.

물론 중간 공격에서 사람을 보호하기 위해 네트워크를 통해 전송 된 데이터를 암호화 할 수는 있지만 누군가가 가비지 데이터를 보내는 것을 막지는 않습니다.

데이터가 가비지인지 확인해야합니다. 오프셋이 메시지 바깥 쪽을 가리키면 뭔가 비린내가 진행되고 있으므로이를 처리해야합니다.

+0

데이터가 필요없는 경우 암호화하는 이유는 무엇입니까? 암호화되지 않은 상태로 보관하는 것이 안전합니다. –

+1

영업 사원이 제 3자가 비행 중 데이터를 수정하지 못하도록하려면? 그는 자신의 프로토콜 메시지를 위조하여 자신의 소프트웨어를 다운시키려는 악의적 인 당사자에 대해 우려하고 있습니다. – jalf

+0

@jaif - 또는 아마도 네트워크 또는 코드를 전송하는 중에 오류가 발생했을 수 있습니다. 악의적이지 않을 수 있습니다. –

관련 문제