3

ユーザーが別の Web クライアント アプリケーション (Oracle Siebel) でタスクを実行できるようにする Javascript に基づくファット クライアント ページを開発しています。

Web ページがブラウザーから呼び出される方法は、単純な window.open() 呼び出しです。

これが発生すると、最後にいくつかのパラメーターを含む URL が渡され、その値に応じてファット クライアント ページの機能が変更されます。

例えば

userlevel=1 //一般ユーザー

userlevel=2 //上級ユーザー

例では、完全な URL は次のようになります。

www.mypage.com/index.htm?id=25215125%userlevel=2%context=full

ただし、アクセス権を変更したいユーザーは、ユーザー レベルを変更すると、このファット クライアント ページでアクセス権を変更できることを理解するだけで済みます。

はい、私はこれが危険であることを知っています。ユーザーが変更できないコントロールを備えたサーバーサポートのシンクライアントを使用しない理由を尋ねる前に。こうするしかない!

このシステムは「信頼できる」環境に置かれ、このユーザーの IT スキルはせいぜい平均的です。

したがって、私がする必要があるのは、(可能であれば) URL パラメーターを難読化/スクランブルし、ファット クライアントで解読する方法を見つけることだけです。

例えば

www.mypage.com/index.htm?1sdf908ga90-821098650f8asdg098g0a98

ブラウザでテストしましたが、これまでのところ苦情は​​ありませんでしたので、それを解読するためのロジックを開発する必要があると思います.

たとえば、MD5 を使用できますか?

例やアイデアはありますか?

ありがとう

4

2 に答える 2

2

Base64 でエンコードしてみてください。https://stackoverflow.com/a/4699739/1088652

これにより、URL が短縮されて難読化されるため、ユーザーは URL に値を投げることができなくなります。

于 2013-03-12T14:03:15.173 に答える
0

Params の整合性は、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;
}
于 2016-02-14T16:09:18.010 に答える