ユーザー A が他のユーザーを検索して表示できるサイトがあります。ユーザーAがユーザーBをクリックすると、ユーザーBのIDをGET変数として渡します。次に、ビュー内でその ID を使用して、適切なデータを表示します。これは良い習慣ですか?ユーザー ID を公開する必要がありますか?
また、ユーザー A がユーザー B のプロファイルにいる場合、ユーザー A にメッセージを送信できます。ユーザー B の ID をコントローラーに安全に渡すにはどうすればよいですか?
どんな助けでも大歓迎です。
これを行う方法は複数あります。
私がそのようなユースケースで通常使用する 1 つの方法は、十分な疑似乱数である一意のハッシュ ID を作成することです。これにより、それが URL を通過したときに、ユーザーがその中のいくつかの値をランダムに変更して取得することができなくなります。別のユーザーのプロファイル。
たとえば、ID を渡す場合、URL は次のようになります。
showProfile.php?id=1256
1256 を 1257 に変更すると、次のユーザーが明らかになる場合があります。
十分にランダムなハッシュ文字列を渡すとします。
showProfile.php?id=u4n5l4534mnk43nl34n
また、そのようなハッシュはシーケンスに従わないため、次の文字/数字を取得するために文字/数字を変更することはできません.
また、サイトのメンバー間でユーザー データをどの程度安全に共有したいかによっても異なります。
それで、ユーザーAがユーザーBのプロフィールをクリックすると、URLはsite.com/profile.php?id=24
うーんのようになると思いますか?24
ユーザー B のプロファイルです。その場合は、問題はありません。ある時点で、ユーザーのプロファイルを検索しているとき、データベースにあるもの、つまり ID、ユーザー名、姓などをエコーすることになります。id は良いですが、プロフェッショナリズムが必要な場合は、htaccess の助けを借りてユーザー名を使用することもできます。site.com/profile/john
したがって、要するに、まだデータベースにないプロファイルごとに何かをエコーする方法はありません。
しかしmysql
、プロフィールページで使用している場合に言及したタグを見ると、次のようになります。
$user = $_GET['id'];
$query = mysql_query("SELECT * FROM USER WHERE id = '$user' ");
ええと...それは危険であり、あなたのウェブサイト/データベースを攻撃のために開いたままにします. したがって、上記のようなものを使用している場合は、PDO を使用する必要があります