안녕하세요 유료사진을 구매할 수 있는 앱을 만들고있습니다. S3를 사용하고 Signed…

안녕하세요 유료사진을 구매할 수 있는 앱을 만들고있습니다.

S3를 사용하고 Signed URL(3초 후 URL 접근권한 expired)을 사용해서 S3사진을 접근 할 수 있게 제작을 했습니다.

하지만 안드로이드를 연결하고 WireShark로 패킷분석을 모니터링 해보니 S3에 접근하는 Signed URL을 적나라하게 볼 수 있더군요..

안드로이드에서 S3 데이터를 불러올때 HTTP를 부득이하게 사용해야하는데.. 보안적으로 방법이 없을까요?

13 thoughts on “안녕하세요 유료사진을 구매할 수 있는 앱을 만들고있습니다. S3를 사용하고 Signed…

  1. 서버랑 해당 클라이언트만 공유하는 토큰이나 보안 세션을 통해 그 클라이언트의 요청임을 확인한 다음에 사진을 전달하면 되지 않을까요?
    http ssl(https)로 통신하면 패킷 내용도 암호화 되기 때문에 패킷 가로채서 복호화 하는 문제도 덜을 수 있지 않으실까 싶습니다.

  2. s3에 올려놓고 바로 하시려면 답이 없을 것 같고요. nginx나 apache module에서 해당 사용자 결제 여부를 확인해서 이미지를 뿌려주는 방식을 고려 해보셔야 할것 같네요

  3. SSL도 열어볼 수 없는게 아니기 떄문에.. URL자체가 노출되도 안전한 환경으로 구성하셔야 될 것 같습니다. 예를들어 S3 signed url의 expire를 매우 짧게 준다거나 같은 방법이 있을테구요. Cloudfront 랑 연동하시면 리퍼러나 IP단위로 제한을 추가로 거실 수 있습니다.

  4. 그 정도까지 생각하신다면 전용 뷰어와 전용 데이터 포맷을 만드셔야 합니다. 물론 그런다고 해도 비디오 메모리 덤프 떠서 가져갈 수도 있지만요.

  5. 1) 매우 빨리 만료되는 signed url 발행 -> url 채가도 재활용하기 쉽지 않게 되겠지요.
    2) 그 짧은 expiry 사이에도 다른데서 다운로드 채가는 것이 문제라면, 까봐도 못 열게 encryption -> CloudFront 캐싱은 못 쓰겠네요.

  6. + 부득이 http 쓰신다고 했는데, 패킷 다 노출될 수 있는 상황이라면 오히려 expire time + signed url 도 무용지물 되는 것 아닌가 생각이 드네요.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.