2016-03-21 2 views
0

たとえば、私はユーザを一意に識別するmysqlテーブルユーザにフィールドuser-idを持っています。誰かが私の友人リストを要求した場合、json配列の魔女には、各友人のユーザーIDと名前のような追加データが含まれています。mysqlエントリをRESTで直接idで識別するのは良い考えですか?

私の質問は、これらのユーザーIDをクライアントに直接送信することをお勧めします。これは不安ですか? IDを隠す方法はありますか?

よろしく

+0

下の@tadmanからの優れた回答です。妥当性チェックなしでクライアントからアプリに送り返されるIDなどを信用しないことも重要です。クライアントが「メッセージ256512を削除する」と言う場合、クライアントが実際にそのメッセージの削除を要求する必要があることを確認することなく、それをしないでください。古典的なn00bエラー。クライアントは決して信頼されることはありません。 –

答えて

1

、アプリケーションからID情報をリークすることは深刻な問題であるかどうかには依存します。非常に競争の激しいビジネスで、システム上のユーザーの数が貴重な情報であることがわかっている場合、またはデータベースを体系的にダウンロードするためにユーザーが順番に踏み込んでいくかもしれないと心配している場合、スクランブリングすると役立ちます。

この問題を解決するためのより一般的な方法の2つは、暗号的にランダムな識別子またはUUIDを使用することです。真にランダムな識別子はより多くのセキュリティを提供しますが、これを間違って取得する方法がたくさんあるので、構築には注意が必要です。

スタックオーバーフローのようなサイトでは、ユーザーIDを隠すことに価値がないため、ユーザーIDがリークすることに注意してください。たとえば、プロフィールのリンクにユーザーIDがあります:2441032.

+1

答えをありがとう!私はfacebookでもユーザID https://www.facebook.com/profile.php?id=4を漏らしていることに気づいた。とにかくuuidsはプロフェッショナルに見えますが、パフォーマンスには多くの費用がかかります。 – FunnyItsElmo

+0

実際に大きなパフォーマンスコストはありません。パブリック・フェイシング・インターフェースの代替表現を使用するのはちょっとした作業です。 Rubyでも毎秒100K UUIDを生成できます。 – tadman