Proteção simples de conteudo com Flash Media Server

Fui chamado para resolver um problema em relação a proteção do conteudo de um cliente, o problema consistia em que alguem mal-intencionado estava roubando seus streams ao vivo.
A pessoa simplesmente pegou o codigo html do site e colou no site dela, conseguindo assim transmitir o conteudo em seu blog. O player em questão não foi desenvolvido por mim, portanto nem me dei ao trabalho de olhar o fonte, resolvi ir diretamente para o Flash Media Server.
Baseado na documentação da Adobe, resolvi de uma maneira bem simples, o código do main.asc é o seguinte:

JAVASCRIPT:
  1. trace("init application...");
  2.  
  3. var VALID_REFERRER = "http://www.mydomain.com.br/mySwf.swf";
  4. var VALID_PAGEURL = "http://www.mydomain.com.br/myPage.html";
  5.  
  6. application.onAppStart = function ()
  7. {
  8.     trace("init app...");
  9.     trace("onAppStart> " + application.name + " is starting at " + new Date());
  10. };
  11.  
  12. application.onStatus = function (info)
  13. {
  14.    trace("onStatus> info.level: " + info.level + ", info.code: " + info.code);
  15.    trace("onStatus> info.description: " + info.description);
  16.    trace("onStatus> info.details: " + info.details);
  17. };
  18.  
  19. application.onConnect = function (client)
  20. {
  21.     if ((client.referrer == VALID_REFERRER && client.pageUrl == VALID_PAGEURL))
  22.     {
  23.         trace("acesso permitido");
  24.         application.acceptConnection(client);
  25.     }
  26.     else
  27.     {
  28.         trace("acesso indevido");
  29.         application.rejectConnection(client)
  30.     }
  31.     trace("onConnect> client.ip: " + client.ip);
  32.     trace("onConnect> client.pageUrl: " + client.pageUrl);
  33.     trace("onConnect> client.agent: " + client.agent);
  34.     trace("onConnect> client.referrer: " + client.referrer);
  35.     trace("onConnect> client.protocol: " + client.protocol);
  36. };
  37.  
  38. application.onDisconnect = function (client)
  39. {
  40.     trace("onDisconnect> client.name: " + client.name)
  41.     trace("onDisconnect> disconnecting at: " + new Date());
  42. };
  43.  
  44. application.onAppStop = function (info)
  45. {
  46.    trace("onAppStop> application.name: " + application.name);
  47.    trace("onAppStop> stopping at " + new Date());
  48.    trace("onAppStop> info.level: " + info.level);
  49.    trace("onAppStop> info.code: " + info.code);
  50.    trace("onAppStop> info.description: " + info.description);
  51. };

A API do Flash Media Server é muito poderosa e contém muitos recursos interessantes, um deles é a possibilidade de saber de onde exatamente está vindo a conexão do swf. Neste trecho já resolvia o problema com as constantes declaradas no inicio do arquivo.

JAVASCRIPT:
  1. if ((client.referrer == VALID_REFERRER && client.pageUrl == VALID_PAGEURL))
  2.     {
  3.         trace("acesso permitido");
  4.         application.acceptConnection(client);
  5.     }
  6.     else
  7.     {
  8.         trace("acesso indevido");
  9.         application.rejectConnection(client)
  10.     }

Resumindo, so será feita a conexão com o Flash Media Server se a tentativa de conectar vier de um SWF e HTML definidos por mim.
Uma solução bem simples mas que resolveu o problema :D
Como ultimo recurso, o ladrão ainda copiou o swf do cliente e colocou em seu blog :P

Find how to find 2010 movies.

Referências
http://www.leonardofranca.com.br/index.php/2008/05/19/protegendo-seu-conteudo-de-video-com-flash-media-server/

2 Comments

Other Links to this Post

RSS feed for comments on this post. TrackBack URI

Leave a comment

WordPress Themes


Video & Audio Comments are proudly powered by Riffly