LUC1EL: BLOG

[Wowza] 와우자 HLS 무단링크, 불펌 차단 본문

소프트웨어 개발/이미지, 영상처리

[Wowza] 와우자 HLS 무단링크, 불펌 차단

LUC1EL 2018. 5. 30. 19:54

@markdown



# FLASH의 대세가 기울어진지 오래된 지금 시간이 흘러갈 수록 플래시 입지는 빠르게 좁아지고 있다. 


---



### 대부분의 사이트들이 HLS 도입을 하는 것으로 추정된다. 


HLS는 Apple이 개발한 스트리밍 전송 프로토콜로 웹에 최적화되어 있어 근래에 이르러 대부분의 모바일 기기와 PC등에 적용되었지만 HTTP 또는 WEB이라는 근본적인 취약성으로 인해 방송 URL 하나면 영상이 불법 도용이 될 수가 있다. 


Wowza 커뮤니티에서는 이런 고민에 대해 여러가지 논의가 이루어졌는데, RTMP 경우 Crossdomain 또는 Referer체크등의 접속자의 IP또는 User-agent, Referer등을 확인하는 방법과 특정키로 해시값을 구한뒤 RTMP URL 또는 HLS URL에 값을 패싱하여 인증을 획득하는 방식이 대표적이다. 


그러나 HLS의 경우는 이상하다.


Wowza 확장 모듈을 Java로 개발하면서까지 체크해 본 바로는 Referer를 넘겨주지 않는다 =_= (증말 삽질 많이 했습니다.) 

이유는 정확히는 모르겠으나 Wowza가 1~2년된 소프트웨어도 아니고 무언가 불가항력적인 이유가 있다고 판단된다. 

(예를 들면 Video 요소로 영상을 플레이 할 경우 브라우저에서 Video 요소로는 Referer를 넘기지 않는다는 규칙 또는 기능미싱등) 


여기서 소개 할 방법은 그 HLS의 Referer를 얻는 방법에 대하여 설명하고자 한다. 

아래 모듈은 우회적인 방법으로 Referer를 얻어 자체적으로 미리 클라이언트에 대한 인증을 한 후 다음에 오는 HLS 접속을 허용 또는 차단한다. Referer를 얻는 방식은 IMAGE 요소로 Wowza에 접근하게 하여 얻는다. 본 게시글의 작성자가 만든 모듈이 아니니 먼저 검색해보고 싶다면 아래 링크를 클릭하면 된다. _ how-to-control-access-to-your-application-by-checking-referer-domain-modulereferervalidate 모듈 다운로드: wse-plugin-referervalidate.zip _ 먼저 해야할 일은 Wowza 확장을 환경설정에 추가하는 고다. _ ##### 이 모듈은 Java로 제작되었으며 확장자가 Jar인 단일 파일이다. 단지 /usr/local/WowzaStreamingEngine/lib/ 에 붙여넣기 하면 그만이다. 다만 환경설정과 이해가 필요할 뿐이다. _ ### Application 환경설정하기 (Live) *** ~~~

base Base com.wowza.wms.module.ModuleCore ~~~ 위 Modules 요소를 찾은 후 아래와 같이 플러그인을 등록한다. referer-validate의 모듈 등록 내용이다. RefererValidate Validate player connections com.wowza.wms.plugin.RefererValidate Validate player connections com.wowza.wms.plugin.RefererValidate 2. HTTPProvider 추가 IMAGE 접근을 이용해 Referer를 얻기에 Wowza의 HTTPProvider에도 모듈설정을 따로 추가해야한다. 또한 HTTPProvider에 대한 설정도 따로 있지만 유의한 설정은 아래 설명한다. 3. RefererValidate의 설정값을 Live/Application.xml 설정에 추가 refererValidateDebugLog Boolean False refererValidateReferers String *example.com, *abc.com refererValidateAllowBlankReferers Boolean False refererValidateSessionValidDuration Integer 60000 refererValidateReturn404OnNotValidated Boolean True refererValidateImagePath String myimage.png 위의 테이블은 Referer-Validate 모듈의 환경설정 값 각 항목을 나열한 것이다. 우리가 주목해야 할 것은 refererValidateReferers, refererValidateSessionValidDuration등인데, 사실 refererValidateReferers 하나만 설정해도 원하는 바를 이룰 수 있다. 4. JWPlayer등 웹플레이어와 함께 사용하기