2012-05-02 4 views
0

J'espérais que quelqu'un pourrait m'aider à régler quelque chose. J'ai travaillé sur un plugin de panier pour WordPress pendant un bon moment maintenant. J'ai commencé à le coder à la fin de l'année 2008 (et ça a été un de ces projets de "travailler dessus quand j'ai du temps", donc ça va très lentement, évidemment!) Et je suis allé très loin avec ça. Même quelques testeurs m'ont pris en charge et m'ont donné leur avis. (Veuillez noter que ce plugin est également destiné à être téléchargé - je n'ai pas l'intention d'en faire un plugin premium.)Plugin WordPress et cryptage unidirectionnel

Quoi qu'il en soit, en 2010, lorsque tous les éléments PCI/DSS sont devenus standards, je les ai mis de côté, parce que le plugin était censé conserver certaines informations dans la base de données, et je n'étais pas sûr à 100% de ce qui était qualifié de "données sensibles", et je ne voulais rien y mettre qui puisse compromettre qui que ce soit. . Au cours des dernières semaines, certains collègues et moi avons eu une discussion sur la conformité PCI/DSS, et cela a suscité un intérêt à terminer ce plugin. Je vais supprimer le stockage des numéros de cartes de crédit et toutes les données de cette nature, mais j'aime bien l'idée de stocker les noms et les adresses de livraison des personnes qui souhaitent volontairement créer un compte avec le site qui pourrait utiliser ce plugin Donc, s'ils magasinent là encore, ce genre d'information est conservé. Gardez à l'esprit, les données stockées seraient informations publiques - le genre de chose que vous trouveriez dans un annuaire téléphonique, ou un coup d'oeil dans la salle d'enregistrement d'un palais de justice. Donc rien de tel que le stockage des SS #, des antécédents médicaux ou des numéros de cartes de crédit. Juste des trucs qui permettraient peut-être à quelqu'un de voir les achats passés, et de conserver quelques informations pour faciliter le processus de paiement. Un de mes collègues a suggéré que je fasse encore quelque chose pour améliorer la sécurité, puisque le nom et l'adresse de livraison seraient probablement transmis à la passerelle de paiement que le propriétaire du site choisirait d'utiliser. Ils ont suggéré que j'utilise le "chiffrement unidirectionnel". Maintenant, je ne suis pas un énorme monstre de sécurité, mais je suis à peu près sûr que cela implique (un aspect de toute façon) des choses comme des hachages MD5 avec des sels, ou autres. Cela me déroute, car je n'aurais pas la moindre idée de l'endroit où chercher pour voir comment utiliser ce genre de chose avec mon code, et/ou si cela fonctionnerait en passant ce type de données à PayPal ou à Google Checkout, ou Mal, ou quoi d'autre. Donc je suppose que ce n'est pas un genre de question "J'ai besoin d'exemples de code", mais plus d'un genre "s'il vous plaît éclairer moi, parce que je suis un peu dunce" genre de question. (qui, j'en suis sûr, fait que les gens se sentent beaucoup mieux sur le fait que j'écris un plugin LOL)

Répondre

0

Le chiffrement unidirectionnel est utilisé pour stocker dans la base de données des informations dont vous n'avez pas besoin de la base de données à nouveau dans son étape non cryptée (d'où le moniker à sens unique). Cela pourrait, dans un sens plus général, être utilisé pour démontrer que deux personnes (ou systèmes) différents sont en possession du même élément de données. Git, par exemple, utilise des hachages pour vérifier si les fichiers (et en fait toutes les structures de répertoires) sont identiques.

Généralement dans un contexte ecomm les hachages sont utilisés pour les mots de passe (et parfois les cartes de crédit) car en tant que propriétaire du site, vous n'avez pas besoin de conserver le mot de passe, vous avez besoin d'une fonction actuellement envoyé par l'utilisateur est le même que celui précédemment fourni. Donc, pour authentifier un utilisateur, vous devez passer le mot de passe fourni par l'algorithme de chiffrement (MD5, SHA, etc.) afin d'obtenir un «hash». Si le hachage correspond au hachage précédemment généré et stocké dans la base de données, vous savez que le mot de passe est le même.

WordPress utilise des hachages salés pour stocker ses mots de passe. Si vous ouvrez votre table wp_users dans la base de données, vous verrez les hachages.À l'inverse de ce système, si quelqu'un vole votre base de données, il ne reçoit pas les mots de passe d'origine, mais seulement les valeurs de hachage que le voleur ne peut pas utiliser pour se connecter aux sites Facebook, bancaires, etc. (si votre utilisateur a utilisé le même mot de passe). En fait, ils ne peuvent même pas utiliser les hachages pour se connecter au site où ils ont été volés, car un hachage produit un hash différent.

Le sel fournit une mesure de protection contre les attaques par dictionnaire sur le hachage. Il existe des bases de données de mappages entre les mots de passe communs et les valeurs de hachage où les valeurs de hachage ont été générées par des fonctions de hachage à sens unique utilisées régulièrement. Si, lors de la génération du hachage, vous ajoutez une valeur salée à la fin de votre chaîne de mot de passe (par exemple mon mot de passe devient abc123salt), vous pouvez toujours faire la comparaison avec la valeur de hachage précédemment générée et stockée si vous utilisez le même valeur de sel à chaque fois. Vous ne voudriez pas dire quelque chose comme une adresse ou un numéro de téléphone (ou quelque chose du genre) si vous avez besoin de le réutiliser dans sa forme brute, par exemple pour pré-remplir un champ de paiement pour un utilisateur connecté. Les bonnes pratiques impliqueraient également de ne pas stocker les données dont vous n'avez plus besoin à l'avenir. Si vous n'avez pas besoin du numéro de téléphone à l'avenir, ne les stockez pas. Si vous stockez le numéro de transaction de réponse de la passerelle de paiement, vous pouvez l'utiliser pour les enquêtes de fraude et laisser le stockage de toutes les autres données jusqu'à la passerelle.

Je laisserai aux autres le soin de discuter des mérites relatifs de MD5 vs SHA vs ??? systèmes de hachage. Remarque, il y a des fonctions intégrées à PHP pour faire le hachage.

+0

excellent - merci! Je pense que ce que vous avez dit au sujet du «stockage du numéro de transaction de réponse» pourrait bien être ce que je cherche - ce petit commentaire là peut-être la réponse dont j'ai besoin. Merci ou l'explication! – Shelly