APEX_UTIL.PREPARE_URL p_checksum_type=>3 校验和计算规则问询
APEX 21.1.2版本SESSION级别校验和(cs参数)生成逻辑
你调用APEX_UTIL.PREPARE_URL时传入p_checksum_type => 3生成的URL中cs参数为SESSION级别校验和,内部生成逻辑如下:
核心计算因子
计算校验和时会纳入以下不可篡改的固定因子,任意因子被修改都会导致校验和校验失败:
- 会话与应用上下文:当前有效会话ID、应用ID、目标页面ID
- URL请求参数:所有需要传递的页项名称、对应参数值(计算前会按固定字典序对键值对排序,排除参数顺序差异对结果的影响)
- 内置私有密钥:APEX实例级别的会话状态密钥(实例初始化时生成,全局唯一,存储在系统表中不对外暴露)、当前会话对应的专属会话密钥(会话创建时生成,生命周期与会话保持一致)
计算流程
- 按APEX内部固定的拼接规则,将上述所有因子用专属分隔符拼接为原始字符串,避免不同因子边界混淆
- 对拼接完成的原始字符串执行SHA-256哈希运算,得到固定长度的二进制哈希结果
- 对二进制哈希结果做URL安全的Base64编码:去除末尾的
=填充符,将+替换为-、/替换为_ - 最终在编码结果前拼接校验和级别标识
3,就是你看到的cs参数完整值
校验逻辑
当APEX收到携带cs参数的请求时,会从请求中提取所有对应因子按照上述规则重新计算校验和,和URL携带的cs值做比对,比对不通过会直接返回请求错误,避免URL参数被恶意篡改、或者有效链接被跨会话盗用。
内容的提问来源于stack exchange,提问作者Silky
相关产品推荐
相关产品推荐

