As seguintes APIs do ActionScript 3.0 relacionadas a som têm restrições de segurança:
-
O método
SoundMixer.computeSpectrum()
— sempre permitido para arquivos SWF que estão na mesma área de proteção de segurança que o arquivo de som. Existem verificações de segurança para o código executado em outras áreas de segurança.
-
O método
SoundMixer.computeSpectrum()
— sempre permitido para código sendo executado na mesma área de segurança que o arquivo de som. Para arquivos em outras caixas de proteção, há verificações de segurança.
-
A propriedade
id3
da classe Sound — sempre permitida para arquivos SWF que estão na mesma caixa de proteção de segurança que o arquivo de som. Existem verificações de segurança para o código executado em outras áreas de segurança.
Todo evento tem dois tipos de caixas de proteção associadas a ele, uma caixa de proteção de conteúdo e uma caixa de proteção do proprietário:
-
O domínio de origem do som determina a caixa de proteção de conteúdo e isso determina se os dados podem ser extraídos do som por meio da propriedade
id3
do som e do método
SoundMixer.computeSpectrum()
.
-
O objeto que iniciou a reprodução do som determina a caixa de proteção do proprietário e isso determina se o som pode ser parado usando o método
SoundMixer.stopAll()
.
Ao carregar o som usando o método
load()
da classe Sound, você pode especificar um parâmetro
context
que é um objeto SoundLoaderContext. Se você definir a propriedade
checkPolicyFile
do objeto SoundLoaderContext como
true
, o Flash Player verificará se há um arquivo de política de URL no servidor do qual o som é carregado. Se houver um arquivo de política e o arquivo permitir o domínio do código que está sendo carregado, o código receberá permissão para acessar a propriedade
id
do objeto Sound. Caso contrário, não terá essa permissão. Além disso, a configuração da propriedade
checkPolicyFile
pode ativar o método
SoundMixer.computeSpectrum()
para sons carregados.
É possível usar o método
SoundMixer.areSoundsInaccessible()
para descobrir se uma chamada para o método
SoundMixer.stopAll()
não parará todos os sons porque a caixa de proteção de um ou mais proprietários de som está inacessível para o chamador.
A chamada do método
SoundMixer.stopAll()
para esses sons cuja caixa de proteção de proprietário é a mesma que a do chamador de
stopAll()
. Ela também para aqueles sons cuja reprodução foi iniciada por arquivos SWF que chamaram o método
Security.allowDomain()
para permitir acesso pelo domínio do arquivo SWF que está chamando o método
stopAll()
. Qualquer outro som não é parado e a presença desses sons pode ser revelada chamando o método
SoundMixer.areSoundsInaccessible()
.
A chamada do método
computeSpectrum()
requer que todo som que esteja sendo reproduzido seja da mesma caixa de proteção que o objeto que está chamando o método ou de uma origem que recebeu permissão para a caixa de proteção do chamador. Caso contrário, uma exceção SecurityError é lançada. Para sons que foram carregados de sons incorporados em uma biblioteca em um arquivo SWF, a permissão será concedida com uma chamada para o método
Security.allowDomain()
no arquivo SWF carregado. Para sons carregados de origens que não sejam arquivos SWF (originários de arquivos mp3 carregados ou de arquivos de vídeo), um arquivo de política de URL no servidor de origem concede acesso a dados contidos na mídia carregada.
Para obter mais informações, consulte
Controles de autor (desenvolvedor)
e
Controles de site (arquivos de política)
.
Para acessar dados de som a partir de fluxos RTMP, é necessário conceder acesso no servidor. Utilize a propriedade ActionScript de lado do servidor
Client.audioSampleAccess
para permitir acesso a diretórios específicos no Flash Media Server. Para obter mais informações, consulte a
Referência de linguagem do ActionScript de lado do servidor
.