请求锁定 request-locking
为了减少篡改请求的机会,提供了一种简单的锁定装置。
如果设置了attribute::RequestLock,则必须以&xxxx
的形式将锁定值附加到请求中,其中xxxx是四位十六进制值。 此十六进制值是使用应用于请求的 修饰符 部分(在“?”之后)的简单哈希算法生成的 用于将URL路径与 修饰符 分开。 必须在请求完全进行http编码之后,但在对其进行模糊处理(可选)之前执行此操作。 在取消混淆请求后,服务器对修饰符字符串使用相同的哈希算法(不包括最后5个字符,这些字符包含锁值)。 如果生成的键与锁定不匹配,则拒绝请求。
IMPORTANT
如果启用此功能,请注意,其使用存在某些限制,包括:
- Dynamic Media用户界面可能无法显示 上次发布 字段的正确详细信息。 但是,此项影响不会影响发布。
— 当前,启用 请求模糊处理 和 请求锁定 时,HLS视频流不起作用。
— 当前,在启用 请求模糊处理 和 请求锁定 的情况下,某些Dynamic Media查看器无法工作。
- Dynamic Media用户界面可能无法显示 上次发布 字段的正确详细信息。 但是,此项影响不会影响发布。
— 当前,启用 请求模糊处理 和 请求锁定 时,HLS视频流不起作用。
— 当前,在启用 请求模糊处理 和 请求锁定 的情况下,某些Dynamic Media查看器无法工作。
用于生成请求锁定值的C++示例代码:
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;
}
另请参阅 section-a6d45406c0354669ac581793e4fa8436
recommendation-more-help
a26166cd-f2f4-45ce-996d-96a0f0d6cf49