Les deux sens de chiffrement en PHP
Mon application (évidemment) utilise un ID unique pour distinguer les enregistrements. Ce liquide est passé dans l'Url (par exemple ./examplepage.php?UID=$example_int
), parmi d'autres choses.
Alors que j'ai bien évidemment avoir une validation côté serveur en place pour s'assurer que les clients n'ont pas accès à d'autres clients des données, est-il un des deux sens de la méthode de cryptage que je peux utiliser PHP pour seulement passe cryptés Uides (par exemple ./examplepage.php?EUID=$encrypted_int
), pour réduire encore la chance de toute personne à penser "hé, qu'advient-il si je incrément de cet entier?"
TIA.
- voté contre parce que je ne pense pas que la conversation a fini par vraiment d'être sur les deux cryptage à sens unique ...
Vous devez vous connecter pour publier un commentaire.
Plaçant un dièse à côté de l'ID pour assurer sa sécurité, ou rembourrage de la pièce d'identité avec des données supplémentaires, ou encore la conversion de l'ID au sortilège serait tout le travail assez bien je pense.
PHP 5.3 a introduit une nouvelle méthode de chiffrement qui est vraiment facile à utiliser:
openssl_encrypt
etopenssl_decrypt
. Ce n'est pas bien documentée ici, donc voici un exemple simple:J'ai choisi de 256 AES car il est solide et rapide. Il a été adopté par les états-UNIS gouv pour chiffrer des documents top secret. C'est rapide compte tenu de la machine et des logiciels. Voici une liste des méthodes de cryptage disponibles:
AES-128-CBC, AES-128-CFB, AES-128-CFB1, AES-128-CFB8, AES-128-LA BCE, AES-128-OFB, AES-192-CBC, AES-192-CFB, AES-192-CFB1, AES-192-CFB8, AES-192-LA BCE, AES-192-OFB, AES-256-CBC, AES-256-CFB, AES-256-CFB1, AES-256-CFB8, AES-256-LA BCE, AES-256-OFB, BF-CBC, BF-CFB, BF-LA BCE, LE BF-OFB, CAMÉLIA-128-CBC, CAMÉLIA-128-CFB, CAMÉLIA-128-CFB1, CAMÉLIA-128-CFB8, CAMÉLIA-128-LA BCE, CAMÉLIA-128-OFB, CAMÉLIA-192-CBC, CAMÉLIA-192-CFB, CAMÉLIA-192-CFB1, CAMÉLIA-192-CFB8, CAMÉLIA-192-LA BCE, CAMÉLIA-192-OFB, CAMÉLIA-256-CBC, CAMÉLIA-256-CFB, CAMÉLIA-256-CFB1, CAMÉLIA-256-CFB8, CAMÉLIA-256-LA BCE, CAMÉLIA-256-OFB, CAST5-CBC, CAST5-BFC, CAST5 DE LA BCE, CAST5-OFB, DES-CBC, DES-CFB, DES-CFB1, DES-CFB8, DES-DE LA BCE, DES-EDE, DES-EDE-CBC, DES-EDE-CFB, DES-EDE-OFB, DES-EDE3, DES-EDE3-CBC, DES-EDE3-CFB, DES-EDE3-CFB1, DES-EDE3-CFB8, DES-EDE3-OFB, DES-OFB, DESX-CBC, RC2-40-CBC, RC2-64-CBC, RC2-CBC, RC2-CFB, RC2-BCE, RC2-OFB, RC4 RC4 40, les SEMENCES de la CBC, de SEMENCES-CFB, les SEMENCES de la BCE, les SEMENCES de cette initiative, aes-128-cbc, aes-128-cfb, aes-128-cfb1, aes-128-cfb8, aes-128-la bce, aes-128-ofb, aes-192-cbc, aes-192-cfb, aes-192-cfb1, aes-192-cfb8, aes-192-la bce, aes-192-ofb, aes-256-cbc, aes-256-cfb, aes-256-cfb1, aes-256-cfb8, aes-256-la bce, aes-256-ofb, bf-cbc, bf-cfb, bf-la bce, le bf-ofb, camélia-128-cbc, camélia-128-cfb, camélia-128-cfb1, camélia-128-cfb8, camélia-128-la bce, camélia-128-ofb, camélia-192-cbc, camélia-192-cfb, camélia-192-cfb1, camélia-192-cfb8, camélia-192-la bce, camélia-192-ofb, camélia-256-cbc, camélia-256-cfb, camélia-256-cfb1, camélia-256-cfb8, camélia-256-la bce, camélia-256-ofb, cast5-cbc, cast5-bfc, cast5 de la bce, cast5-ofb, des-cbc, des-cfb, des-cfb1, des-cfb8, des-de la bce, des-ede, des-ede-cbc, des-ede-cfb, des-ede-ofb, des-ede3, des-ede3-cbc, des-ede3-cfb, des-ede3-cfb1, des-ede3-cfb8, des-ede3-ofb, des-ofb, desx-cbc, rc2-40-cbc, rc2-64-cbc, rc2-cbc, rc2-cfb, rc2-bce, rc2-ofb, rc4 rc4 40, les semences de la cbc, de semences-cfb, les semences de la bce, de la graine-ofb
MISE À JOUR IMPORTANTE!!!
Grâce Hobo et Jorwin pour rappeler qu'en PHP 5.3.3 > il y a un nouveau paramètre qui rend cette fonction un peu plus sécurisé.
Jorwin référencé ce lien dans son commentaire, et en voici un extrait qui est applicable:
Vous n'avez pas besoin de deux manière de chiffrement le chiffrement est pour le maintien de la secret, mais ce que vous êtes vraiment à la recherche pour ici est authenticité.
Hmac (essentiellement, incrustée de hachages) sont un moyen de se cryptographiques de l'authenticité. Accompagner le liquide avec un HMAC de l'UID (PHP a un HMAC mise en œuvre), à l'aide d'une clé que seul le sait. Au début de chaque demande, cochez la HMAC.
Fondamentalement, il faut utiliser le bon outil pour le bon travail.
Alors que le PHP prend en charge beaucoup de deux façon, les algorithmes de hachage je ne vois pas qu'il soit utile dans cet exemple. Ce que vous devez faire est de:
Mais si votre coeur est fixé sur le hachage il suffit de choisir l'un des algorithmes fourni.
Pour les deux sens de chiffrement vérifier mcrypt, ou si vous préférez une pure mise en œuvre phpseclib.
D'abord, le cryptage des paramètres d'URL est généralement une mauvaise idée, et séparé de recherche (basé sur un indice
CHAR
colonne générée par un CSPRNG) est mieux pour 99,9% des cas d'utilisation.Avec qui dit: Oui, vous pouvez utiliser l'extension OpenSSL (n'utilisez pas de mcrypt) pour chiffrer les données comme suggéré espradley, cependant, je vous mets en garde de ne pas s'arrêter au simple de chiffrement.
Le cryptage sans message d'authentification est dangereux, surtout si vous êtes à la confiance de l'utilisateur final avec le texte chiffré.
La solution est donc d'utiliser chiffrement authentifié, qui peut être facilement accessible avec libsodium, disponible sur PECL.
Si vous ne pouvez pas, pour quelque raison que ce soit installer une extension PECL, il y a deux bibliothèques PHP de choisir à partir de: désamorcer/php-chiffrement et zend-crypte. Ils offrent tous deux conformes à la norme de chiffrement authentifié et ils sont sûrs à utiliser (pour ce que ça vaut, j'ai souvent effectuer les audits de code pour les implémentations de la cryptographie en PHP, je ne suis pas simplement certaines personne au hasard sur internet).