我正在开发一个基于Javascript的胖客户端页面,允许用户使用另一个Web客户端应用程序(Oracle Siebel)执行任务。
从浏览器调用网页的方式是通过一个简单的window.open()调用。
当发生这种情况时,将传递一个URL,该URL在末尾包含一些参数,这些参数将根据它们具有的值来改变胖客户端页面的功能。
e.g
userlevel = 1 //普通用户
userlevel = 2 //高级用户
在一个示例中,完整的URL就是这样
呜呜呜.蚂蚁爬个.com/index.htm?ID=25215125%user level=2%context=full
但是,想要更改其访问权限的用户只需要确定如果他们更改了用户级别,那么他们就可以在此胖客户端页面上更改其访问权限。
是的,我知道这是有风险的,在你问为什么我没有使用服务器支持的瘦客户端时,控件无法被用户更改。我只需要这样做!
该系统将处于“可信”的环境中,这些用户将拥有最佳的平均IT技能。
所以我需要做的就是找出一种方法来混淆/加扰URL参数(如果可能的话),然后在胖客户端解密它们。
EG
呜呜呜.蚂蚁爬个.com/index.htm?1水电费908噶90-821098650发8阿斯顿个098个0啊98
我在浏览器上测试了它并且到目前为止没有任何抱怨所以我想我只需要开发一个逻辑来破译它。
例如我可以用MD5吗?
任何例子或想法?
谢谢
尝试Base64编码。 https://stackoverflow.com/a/4699739/1088652
这会缩短它并使其模糊,以便用户不能只在URL中抛出值。
HMAC可确保参数完整性。您使用密钥和所有参数生成哈希,您在URL中包含此哈希,然后在服务器端使用相同的参数生成哈希并比较值。
function generateSignature(array $params, $hmacKey)
{
// sort the array by key using SORT_STRING order
ksort($params, SORT_STRING);
$escapeFunc = function ($val) {
return str_replace(':', '\\:', str_replace('\\', '\\\\', $val));
};
// generate the signing data string
$signData = implode(':', array_map($escapeFunc, array_merge(array_keys($params), array_values($params))));
// base64-encode the binary result of the HMAC computation
$merchantSig = base64_encode(hash_hmac('sha256', $signData, pack("H*", $hmacKey), true));
return $merchantSig;
}