Para reduzir a possibilidade de adulteração de pedidos, é disponibilizada uma facilidade de bloqueio simples.
Se o atributo::RequestLock estiver definido, um valor de bloqueio deve ser anexado à solicitação, na forma de &xxxx
, com xxxx sendo um valor hexadecimal de quatro dígitos. Esse valor hexadecimal é gerado usando um algoritmo hex simples aplicado à parte modifiers da solicitação (após '?' que separa o caminho do URL dos modificadores). Isso deve ser feito depois que a solicitação for totalmente codificada em http, mas antes que seja (opcionalmente) ofuscada. Depois de desofuscar a solicitação, o servidor usará o mesmo algoritmo de hash na string do modificador (excluindo os últimos 5 caracteres, que contêm o valor de bloqueio). Se a chave gerada não corresponder ao bloqueio, a solicitação será rejeitada.
Se ativar este recurso, esteja ciente de que existem certas limitações ao seu uso que incluem o seguinte:
- A interface do usuário do Dynamic Media pode não mostrar os detalhes corretos para o campo Last Published. No entanto, esse efeito não afeta a publicação.
- Atualmente, o streaming de vídeo HLS não funciona quando Request obfuscation e Request locking são ativados.
- Atualmente, alguns visualizadores do Dynamic Media não funcionam quando Request obfuscation e Request locking são ativados.
Código de amostra C++ para gerar o valor de bloqueio de solicitação:
unsigned int lockValue(const char *str)
{
unsigned int sum = 0;
if (str == NULL)
return sum;
for (; *str; ++str)
sum = (sum*131 + *str) & 0xffff;
return sum;
}
Codificação HTTP, Ofuscação de solicitação, atributo::RequestLock