oracle - apex_util.prepare_url() 中的校验和是如何计算的?
问题描述
我目前正在审查一个 apex 应用程序,它使用带有“p_checksum_type => 3”的“APEX_UTIL.PREPARE_URL”调用来返回一个带有有效“SESSION”级别校验和参数的 URL。
这种生成的 URL 的一个示例是:
https://localhost/APEX/f?p=PAGE:APP:SESSION::::P1337_AID,P1337_ALID:2,&cs=3qGcLriwAHNz36flGhBsxJewK0yWV38ac1cn4GcwDe3r0TZ3GKLtyKSbgLwTCE_kd6YSSpHwh7HlWL-rrfvy36z
我的问题是如何在内部生成 &cs URL 参数值。在这种情况下,文档不是很有帮助。提前致谢。
顶点版本:21.1.2
prepare_url 的 Apex 文档: https ://docs.oracle.com/database/apex-5.1/AEAPI/PREPARE_URL-Function.htm#AEAPI160
解决方案
如果你想对他们的校验和算法进行逆向工程,有几个哈希函数需要注意;请参阅《管理指南》中的“3.3.2.1.8 选择校验和哈希函数”部分:
从 Checksum Hash Function 中,选择 Application Express 用来为校验和生成单向哈希字符串的哈希函数。
SHA-2 算法仅在 Oracle Database 12c 或更高版本上受支持。Most Secure自动选择最安全的可用算法。因此,Oracle 推荐此设置。在 Oracle Database 12c 或更高版本上,这评估为 SHA-2,512 位,在 Oracle Database 11g 上,SHA-1 是最安全的算法。由于不推荐使用 MD5 算法,Oracle 不推荐此设置。
3 种不同级别的会话状态保护(应用程序级别、用户级别、会话级别)的描述模糊地提到校验和可以特定于“工作空间和应用程序”、“工作空间、应用程序和用户”或“会话”,分别。
此外,旧版本的文档提到校验和包括隐藏页面项pSalt
作为盐。
根据校验和文本中的下划线和破折号,它们可能base64url
用于将二进制哈希(SHA-256 为 64 个字节)转换为文本值(SHA-256 为约 87 个字符)。
现在,他们在哪些特定字段上运行校验和?不知道,这才是真正的问题。希望这足以为您指明正确的方向!
推荐阅读
- ios - 拥有同步线程的目的
- python - 通过 gcloud 发送 Hadoop 作业
- directx - 何时使用 IDXGIFactory3::GetCreationFlags
- java - 持久实体如何具有关联标识符但在数据库中没有表示?
- mysql - 如何拆分字符串以显示在 MySQL 的不同列中
- wso2 - WSO2 api 管理器 - API 状态更改工作流 - 错误 - 既不在同一进程中也不在父进程中 errorCode='REST_CLIENT_INVOKE_ERROR')
- symfony - Symfony 4 SwiftMailer 不发送电子邮件
- android - 如何使用 apache OpenNLP 解决 IllegalStateException 和 ParserConfigurationException 以在 android studio 中查找位置
- android - 当键盘出现 API 26(Samsung S8)时,Android Popupwindow 不会在正确的位置更新
- html - 使用较少的不透明度增加的背景颜色