출처 : http://kb.adobe.com/selfservice/viewContent.do?externalId=kb405456&sliceId=2
적지 않은 사람들이 동영상 캡쳐 프로그램 또는 swf 역컴파일을 통해 알아낸 URL로 비디오 콘텐츠를 떠가는데, FMS3 와 Flash Player 9,0,115 이상을 이용해서 이를 막을 수가 있습니다.
(라고 일단 주장하고 있습니다.)
adobe 에서 이야기하는 방법은 3가지인데 아래와 같습니다.
- Enable SWF Verification.
- Use RTMPE and deny non-RTMPE connections.
- Encrypt video assets with Adobe Flash Media Rights Management Server (FMRMS) (limited to Adobe AIR solutions)
이 중 3번 항목은 별도의 솔루션을 구매해야 하기 때문에 패스하고 1번과 2번을 설정하는 법을 살펴보면
1. Enable SWF Verification
FMS3 서버가 배포되는 swf 의 해쉬값을 갖고 있다가 접속이 발생하면 이를 비교해서 이상한 값을 보내는 클라이언트가 있으면 접속을 끊어버린다고 하는군요.
앞에서 이야기한 바와 같이 Flash Player 9,0,115 이상에서만 이 기능이 가능하고 FMS3 서버 설정을 이용해서 특정 버전 이상의 클라이언트만 접속할 수 있도록 설정할 수도 있으니 이건 큰 문제가 안되겠네요.
설정하는 방법은 무척 간단한데 설치된 FMS3 의 conf 디렉토리 밑을 뒤져보면 Application.xml 이라는 파일을 열어서 <SWFVerification> 항목을 true 로 바꿔주면 됩니다.
그리고 SWF Verification 에 사용할 swf 파일이 있는 경로를 <SWFFolder>에 지정해 주면 되는데, 이걸 지정하지 않으면 해당 application 하단의 SWFs 디렉토리에서 swf 파일을 찾으니 디렉토리를 생성해서 swf를 넣어두어도 됩니다. 그리고 FinalHashTimeout 항목을 적절히 세팅해주면 끝.
말이 복잡한데
<Application>
..... 다른 설정들 어쩌구저쩌구...
<SWFVerification enabled="true">
<SWFFolder></SWFFolder>
<FinalHashTimeout>20</FinalHashTimeout>
</SWFVerification>
..... 다른 설정들 어쩌구저쩌구...
</Application>
이렇게 해면 된다는 이야깁니다.
2. Use RTMPE and deny non-RTMPE connections.
이 기능은 SSAS(Server-Side Action Script) 와 플러그인을 이용하는 관계로 FMS3 서버중 FMSS(Flash Media Streaming Server)는 사용할 수 없고 Flash Media Interactive Server 에서만 사용할 수 있습니다.
SSAS를 이용하거나 또는 플러그인을 만들어서 RTMPE만 접속이 가능하도록 할 수 있는데요, 아무래도 SSAS가 써먹기는 편리합니다.
다음의 코드를 application.onConnnect 핸들러에 추가한 다음 FMS 를 리스타트시키면 적용 끝.
application.onConnect = function(clientObj) {
//only allow rtmpe and rtmpte connections
if(clientObj.protocol == "rtmpe") || (clientObj.protocol == "rtmpte"){
return true;
}
return false
}
플러그인 형태로 만드실 분은 포스팅 처음에 알려드린 URL로 가셔서 adaptors.zip 을 받아보면 cpp 로 된 샘플파일이 있으니 참고해서 만드시면 되겠습니다.
댓글 없음:
댓글 쓰기