Inhaltsverzeichnis
Antwortinhalt:
Heim Backend-Entwicklung PHP-Tutorial Was sind die schnellsten Verschlüsselungs- und Entschlüsselungsmethoden in PHP zum Verschlüsseln von UIDs und anderen IDs?

Was sind die schnellsten Verschlüsselungs- und Entschlüsselungsmethoden in PHP zum Verschlüsseln von UIDs und anderen IDs?

Dec 01, 2016 am 01:27 AM
php

Früher wurde die ID immer direkt als Get-Parameter im Frontend verwendet, beispielsweise eine Adresse wie a.com?uid=16. Wenn der Benutzer dieses Muster entdeckt, kann er es anzeigen, indem er 16 in 17, 18 ändert , 19 usw. Die Daten jedes Benutzers sind verloren gegangen, daher würde ich gerne fragen, wie Sie das Problem gelöst haben?


Die Anforderung bedeutet nicht, dass es Benutzern nicht gestattet ist, die Informationen anderer Benutzer einzusehen, sondern dass jeder sie einsehen kann. Warum besteht also immer noch ein solcher Bedarf? Dies ist genau wie die WeChat-ID von WeChat. Solange Sie eine WeChat-ID haben, ist es schwierig, diese Person durch Credential Stuffing, Glück usw. zu finden. Youku, Tudou, Bilibili, alle Video-Websites zeigen die Video-ID nicht direkt in der Adressleiste an und sind alle verschlüsselt. (Wenn die Video-Website keine fortlaufenden IDs in der Datenbank verwendet, habe ich es nicht gesagt ... Tatsächlich habe ich die Datenbank der oben genannten Website noch nie gesehen)


Die Voraussetzung ist, dass die Ver- und Entschlüsselung schnell und schwer zu knacken sein sollte. (Ersteres hat Vorrang)

Antwortinhalt:

Früher wurde die ID immer direkt als Get-Parameter im Frontend verwendet, beispielsweise eine Adresse wie a.com?uid=16. Wenn der Benutzer dieses Muster entdeckt, kann er es anzeigen, indem er 16 in 17, 18 ändert , 19 usw. Die Daten jedes Benutzers sind verloren gegangen, daher würde ich gerne fragen, wie Sie das Problem gelöst haben?


Die Anforderung bedeutet nicht, dass Benutzer die Informationen anderer Benutzer nicht einsehen dürfen, sondern dass jeder sie einsehen kann. Warum besteht also immer noch ein solcher Bedarf? Dies ist genau wie die WeChat-ID von WeChat. Solange Sie eine WeChat-ID haben, ist es schwierig, diese Person durch Credential Stuffing, Glück usw. zu finden. Youku, Tudou, Bilibili, alle Video-Websites zeigen die Video-ID nicht direkt in der Adressleiste an und sind alle verschlüsselt. (Wenn die Video-Website keine fortlaufenden IDs in der Datenbank verwendet, habe ich es nicht gesagt ... Tatsächlich habe ich die Datenbank der oben genannten Website noch nie gesehen)


Die Voraussetzung ist, dass die Ver- und Entschlüsselung schnell und schwer zu knacken sein sollte. (Ersteres hat Vorrang)

Das ist richtig, wenn Ihr Ziel darin besteht, Benutzer daran zu hindern, die Daten anderer Benutzer anzuzeigen, dann ist Ihre Idee etwas voreingenommen.

Was Sie tun sollten, ist eine Authentifizierung im Backend durchzuführen, anstatt die UID zu verschlüsseln. Wenn der aktuell angemeldete Benutzer beispielsweise uid=16 ist, sollte das Backend bei der Anforderung von a.com?uid=17 (oder anderen Nicht-16-Seiten) feststellen können, dass er keine Berechtigung hat, und eine entsprechende Rückmeldung geben ( B. eine leere Seite ausgeben oder direkt 403 auslösen).
Um die Authentifizierung zu implementieren, müssen Sie lediglich die UID des angemeldeten Benutzers in $_SESSION['uid'] aufzeichnen und bei jeder Anforderung feststellen, ob $_GET['uid'] == $_SESSION['uid'] wahr ist.


26.10.2016 21:51 Ergänzung: <<<
Der Eigentümer der Frage hat die Frage aktualisiert und gesagt, dass jeder die Benutzerinformationen sehen kann, ich aber nur uid Ausblenden. Wenn ich auf diese Situation stoße, besteht mein Ansatz darin, ein Feld openid zur Benutzertabelle hinzuzufügen und es dem Index hinzuzufügen. Wenn sich der Benutzer registriert, kann er uid durch eine Kombination aus UNIX 时间戳, 若干长度的随机字符串, usw. Verwenden Sie die Funktion der Klasse, um ein eindeutiges md5() zu generieren. Wenn die Informationen an die Außenwelt weitergegeben werden, verwenden Sie openid, um die Daten abzurufen. openid<<<EOF


Wenn Sie auf die Verwendung von Verschlüsselung bestehen, können Sie online nach vielen vorgefertigten und ausgereiften Lösungen suchen. Ich habe bei Google mit dem Schlüsselwort

gesucht, und fast alle davon sind auf der ersten Seite zu finden Wenn Sie beispielsweise den folgenden Code aus dem ersten Element in den Suchergebnissen extrahieren möchten, können Sie darauf verweisen (ich habe ihn nicht getestet). PHP加解密

&lt;?php
    
    // 設定金鑰, 負責對資料進行加解密 
    $key = "ac181c517bdf24ce053556bb280a2dcb";

    /**
     * 加密函數
     */
 function encrypt($str)
 {
  $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);  
  return base64_encode(trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, self::$key, $str, MCRYPT_MODE_ECB, $iv)));  
 }

      /**
     * 解密函數
     */
 function decrypt($str)
 {
  $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, self::$key, base64_decode($str), MCRYPT_MODE_ECB, $iv));  
 } 
?&gt;
Nach dem Login kopieren
Quelle: http://jerry17768java.blogspo...

Hash einige + zufällig einige

Ich denke, Sie sollten die Funktion der Berechtigungsbeurteilung hinzufügen, z. B. die Identifizierung von Benutzern anhand von Cookies.

Sie können OpenSSL AES für die Verschlüsselung/Entschlüsselung verwenden:

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

See all articles