4

私は新しいアプリケーションに取り組んでおり、その初期段階の認識を曖昧にするために、これを明らかにする可能性のあるインスタンスを曖昧にしたいと思います
$postId=000001. 代わりに、 を取得し$postId=sH4d6s8dます。短いけどユニークな何か。

他のいくつかの質問を読みましたが、残念ながらほとんどの回答はセキュリティ上の問題に発展しています。ここではアプリケーションのセキュリティは問題ではありません。GET を介して行 ID のあいまいな表現を渡し、その URL を共有可能にする方法を探しているだけです。つまり、複数のユーザー マシンが難読化を解釈できます。

MySQL、XOR のサロゲート キーをざっと調べましたが、私はかなり環境にやさしく、すぐに理解できなくなりました。ここで適切な解決策は何ですか?例はありますか?ありがとう。

アップデート

シンプルな XOR + urlencode ソリューションを決定しました。すなわち:

$v = urlencode($var ^ $key)
$v = (urldecode($v) ^ $key)

これまでのテストから、これは私の目的に適しているようです。ただし、Firefox は表示のために自動デコードするように見えurlencode、アイデアの目的全体を無効にします。

$v = r%5CQXr%5CQXr%5CP
<a href="whatevs.php?id=$v">link</a>

// Firefox renders the below anywhere link is visible (besides source)

whatevs.php?id=r\QXr\QXr\P 

これは面倒です。ID はまだ不明瞭であり、ソースは「伝統的に」urlencode されていますが、これらの文字は URL で自然に見えません。しかし、本当の問題は、リンクをコピーして貼り付けた人が正しいリソースを取得できないことです。

これに対する簡単な修正はありますか?

4

2 に答える 2

1

Xor + base 36 に変換 + 文字列を反転しますか?

$key = 123456789;
$post_id = (1 ^ $key);
$post_id = strrev(base_convert($post_id, 10, 36));
echo $post_id;
于 2012-08-01T17:53:04.290 に答える
1

あなたはそれがセキュリティ上の問題ではないと言いますが、なぜ GET パラメータを保護したいのですか? 本当の価値を隠すことが目的なら、セキュリティ上の問題です^^ 数値と難読化されたコードの間の全単射のみを作成したい場合は、base64_encode のような可逆関数を使用できますが、誰でもデコードできてしまいます。

于 2012-07-31T21:28:54.977 に答える