请求锁定 request-locking

为了减少篡改请求的机会,提供了一种简单的锁定装置。

如果设置了attribute::RequestLock,则必须以&xxxx的形式将锁定值附加到请求中,其中xxxx是四位十六进制值。 此十六进制值是使用应用于请求的​ 修饰符 ​部分(在“?”之后)的简单哈希算法生成的 用于将URL路径与​ 修饰符 ​分开。 必须在请求完全进行http编码之后,但在对其进行模糊处理(可选)之前执行此操作。 在取消混淆请求后,服务器对修饰符字符串使用相同的哈希算法(不包括最后5个字符,这些字符包含锁值)。 如果生成的键与锁定不匹配,则拒绝请求。

IMPORTANT
如果启用此功能,请注意,其使用存在某些限制,包括:
- 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

HTTP编码请求模糊处理属性::RequestLock

recommendation-more-help
a26166cd-f2f4-45ce-996d-96a0f0d6cf49