0

JSONオブジェクトでクライアントに送信される情報のツリーがあります。そのオブジェクトでは、データベースからの生のIDは必要ありません。オブジェクト内のIDとフィールド(タイトルなど)またはソルトのハッシュを作成することを考えましたが、これが処理のオーバーヘッドに深刻な影響を与える可能性があるのではないかと心配しています。

SELECT * FROM `things` where md5(concat(id,'some salt')) = md5('1some salt');

このような状況でIDを隠すための標準的な方法はありますか?

4

3 に答える 3

1

私はあなたのために2つのオプションを考えることができます:

1)すべてのIDを事前にハッシュし、生のIDとともにデータベースに保存します。これは、データベースのサイズとサイズの制約に応じて、適切な場合とそうでない場合があります。

2)簡単なハッシュ関数を自分で書いてください!アイデアがない場合は、簡単なことを提案できます。単純だからといって、それがどのように機能するかを知っているのであれば、それが良くないという意味ではありません。クライアント側で関数がハッシュ解除されていないと想定しています。個人的には、処理関数(ハッシュ関数など)をdbエンドではなくサーバー側のコードエンドで管理することを好みます。これは、MySQLを可能な限り自由に保ち、可能な限り最小のレイテンシでデータを返すためです。

于 2012-04-15T17:25:14.350 に答える
1

オプションとして、phpセッションデータを使用して、クライアントに送信されたID#のリストをハッシュID#とともに保存することもできます。

これは、毎回一意のハッシュが送信されることを意味します。これは、次にロードされるときに追跡できません。

ハッシュIDは、どのように設定してもかまいません(この場合、saltを使用したmd5は機能しますが、単純なものなら何でもかまいません)。セッション内の配列にそれらを格納します。

可能であれば、データベースでそうすることは避けてください。

于 2012-04-15T17:26:55.137 に答える
0

の値を使用して新しい列を作成しmd5(concat(id,'some salt'))、selectステートメントを作成する前にそれを計算して、計算のオーバーヘッドを節約できます。

于 2012-04-15T17:13:41.507 に答える