これまでは、ID は常にフロントエンドの get パラメーターとして直接使用されていました。たとえば、ユーザーがこのパターンを発見した場合、16 を次のように変更するだけで各ユーザーのデータを表示できます。 17、18、19など、どうやって解決したのか聞きたいです。 a.com?uid=16
この要件は、ユーザーが他のユーザーの情報を閲覧できないことを意味するものではなく、誰でも閲覧できることを意味します。では、なぜ今でもそのようなニーズがあるのでしょうか?これは WeChat の WeChat ID と同じで、WeChat ID があればその人を検索できますが、資格情報の詰め込みや運などによってその人を見つけることは困難です。 Youku、Tudou、Bilibili、すべての動画 Web サイトでは、アドレス バーに動画 ID が直接表示されず、すべて暗号化されています。 (動画サイトがデータベース内で連続IDを使用していない場合、私はそれを言いませんでした...実際、私は上記のWebサイトのデータベースを見たことがありません)
要件は、暗号化と復号化が高速であり、解読が困難であることです。 (前者が優先)
返信内容:
これまでは、ID は常にフロントエンドの get パラメーターとして直接使用されていました。たとえば、ユーザーがこのパターンを発見した場合、16 を次のように変更するだけで各ユーザーのデータを表示できます。 17、18、19など、どうやって解決したのか聞きたいです。
a.com?uid=16
この要件は、ユーザーが他のユーザーの情報を閲覧できないことを意味するものではなく、誰でも閲覧できることを意味します。では、なぜ今でもそのようなニーズがあるのでしょうか?これは WeChat の WeChat ID と同じで、WeChat ID があればその人を検索できますが、資格情報の詰め込みや運などによってその人を見つけることは困難です。 Youku、Tudou、Bilibili、すべての動画 Web サイトでは、アドレス バーに動画 ID が直接表示されず、すべて暗号化されています。 (動画サイトがデータベース内で連続IDを使用していない場合は、私は言いませんでした...実際、私は上記のWebサイトのデータベースを見たことがありません)
要件は、暗号化と復号化が高速であり、解読が困難であることです。 (前者が優先)
これと同じように、あなたの目的が
他のユーザーのデータを閲覧できないようにすること
である場合、あなたの考えは少し偏っています。
あなたがすべきことは、uid を暗号化するのではなく、バックエンドで認証することです。たとえば、現在ログインしているユーザーが
である場合、それは本当ですか?
uid=16
,那么当他请求 a.com?uid=17
(或者其他非 16 的页面),后端应该能判断出他没有权限并给出相应的返回(如输出空白页面,或者是直接抛 403 之类)。
至于说怎么去实现鉴权,简单的就是把已登录用户的 uid 记录在 $_SESSION['uid']
里,每次请求的时候判断 $_GET['uid'] == $_SESSION['uid']
2016-10-26 21:51 補足:
<<<質問所有者は質問を更新し、誰でもユーザー情報を見ることができると述べましたが、ユーザーのを使用してデータを取得したいだけです。
<<uid 隐藏起来。遇到这种情况,我的做法是在用户表增加一个字段 openid
并将其加入索引,在用户注册时可以通过 uid
、UNIX 时间戳
、若干长度的随机字符串
等组合后通过 md5()
一类的函数来生成一个唯一的 openid
,对外公开资料的情况下就通过 openid
どうしても暗号化を使用したい場合は、インターネットで検索することもできます。すでに完成したソリューションがたくさんあります。
をキーワードとして検索すると、最初のページにあるものはほぼすべて見つかります。 , 以下のコードは検索結果の最初の項目から抜粋したものなので、参考にしてください(テストはしていません)。
リーリー
PHP加解密
出典: http://jerry17768java.blogspo...
ハッシュ化+ランダム化
Cookieによるユーザー識別などの権限判定の機能を追加すると良いと思います
暗号化/復号化にはOpenSSL AESが利用可能です
リーリー