2012-12-28 3 views
0

예를 들어 Google TV 또는 Apple TV에서 실행되는 응용 프로그램이 있습니다.이 프로그램은 HTTP 요청을 내 서비스에 보냅니다.HTTP 요청을 재생할 수 없게 만들기

이제 누군가가이 요청을 듣고이를 재생하면 서비스 거부 공격 (DOS) 공격을 실행할 수 있습니다.

각 요청을 고유하게 만들 수있는 방법이 없으므로 재생할 수 없습니까?

요청에 암호화 된 시간을 보내고 서버 시간과 요청이 전송 된 시간의 차이를 확인했지만 시간 차이가 너무 커서 비교할 수 없습니다.

누구에게 더 좋은 아이디어가 있습니까?

+0

당신이 말하는 것은 MITM 공격입니다. HTTPS를 사용하면 거의 불가능할 정도로 어려워 질 것입니다. – DaveRandom

+0

@ 우리가 사용하는 장치가 https를 지원하지 않기 때문에 다른 솔루션을 찾아야합니다. –

+0

일반적으로 클라이언트가 사용할 수있는 일회용 키를 서버가 생성하도록 클라이언트를 클라이언트가 서버에 다시 보냅니다. 쿠키. 해당 키가 사용되면 해당 키를 제시하는 추가 요청이 거부됩니다. 이것이 어떻게 구현되는지는 아키텍처에 따라 다르지만, 본질적으로 당신이 보는 것은 쿠키 인증의 주제에 대한 변형입니다. – DaveRandom

답변

1

서버 측과 클라이언트 측 (응용 프로그램이 말하는 중)에서 모두 제어 할 수있는 좋은 상황에 처해 있습니다. 귀하의 메시지

  • 에 밀리 초에서 현재 시간 + + 임의의 숫자
  • 이 값에 의해 플러스 일부 키는 응용 프로그램이 알고 (A 세 번째 입력으로) 생성되는 결합 된 해시를 포함합니다. 일부 좋은 방법은 해시 알고리즘을 사용하십시오.

언급 된 키를 알고있는 코드 만 올바른 해시를 계산할 수 있습니다. 사용 된 요청 레코드 (해시 및 시간 소인)는 오래 사용할 수있는 만료 시간 동안 저장 될 수 있습니다. 아주 오래된 요청 레코드는 타임 스탬프가 포함되어 있으므로 쉽게 만료 될 수 있습니다.

제안 된 접근법의 긍정적 인 특징은 토큰을 수신하기 위해 미리 연결할 필요가없고 인증이 필요없고 등록이 필요없고 공개 프로토콜을 사용할 수 있다는 것입니다. 토큰을 단독으로 사용하는 것은 DoS에 많은 도움이되지 않습니다. 공격자가 토큰을 연결하고 미리 가져 오는 스크립트를 빠르게 작성하기 때문입니다.

+0

감사합니다. Audrius는 내가 필요한만큼 정확하게 작동합니다. –

관련 문제