Comment chiffrer laravel 5.2 URL ou des Routes?
J'ai besoin de chiffrer les routes en cette URL? Parce que je ne veux pas l'utilisateur d'accéder à l'URL en changeant l'id de l'élément. Par exemple, l'utilisateur peut modifier /articles/1234 /article/5678. Bien que le point 5678 1234 et appartiennent au même utilisateur, j'ai encore envie de restreindre le comportement. Ce que j'essaie de faire est de chiffrer les routes, mais je ne suis pas sûr de savoir si c'est une bonne façon ou pas. Des suggestions?
vous ne pouvez pas encypt à l'intérieur des routes, vous chiffrez à l'intérieur de votre contrôleur
"Bien que le point 5678 1234 et appartiennent au même utilisateur, j'ai encore envie de restreindre le comportement". Pourquoi?
Si il y a réellement un problème/cas d'usage de le faire alors s'il vous plaît faire un middleware avec ce cas d'utilisation
Vous pouvez fournir de l'alias de la route et de chiffrer les paramètres.
Je suis coincé à la condition semblable à maintenant.. Comment avez-vous réussi à le faire?
"Bien que le point 5678 1234 et appartiennent au même utilisateur, j'ai encore envie de restreindre le comportement". Pourquoi?
Si il y a réellement un problème/cas d'usage de le faire alors s'il vous plaît faire un middleware avec ce cas d'utilisation
Vous pouvez fournir de l'alias de la route et de chiffrer les paramètres.
Je suis coincé à la condition semblable à maintenant.. Comment avez-vous réussi à le faire?
OriginalL'auteur sandip kakade | 2016-12-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez crypter votre paramètre d'url et décrypter dans votre contrôleur. Vous pouvez essayer ceci:
De votre point de vue: Supposons que votre paramètre est l'id ou plusieurs paramètre, vous pouvez chiffrer.
Votre itinéraire sera:
Dans votre contrôleur, Vous pouvez décrypter votre paramètre:
Vous devez être yous Crypte de l'espace de noms dans votre liste de contrôleur de
Remarque: Vous pouvez crypter les paramètres d'url avec
Crypt::encrypt($parameter)
et décrypter avecCrypt::decrypt($parameter)
Vous pouvez crypter tous les paramètres de la vue en passant par les routes/url . Juste déchiffrer paramètre du régulateur. C'est tout. –
Oui vous avez raison, mais je veux crypter les paramètres ainsi que les itinéraires.
Peut-être Vous ne pouvez pas chiffrer les routes à l'intérieur de routes. Vous seul pouvez crypter de la vue et le contrôleur.
OriginalL'auteur Nazmul Hasan
Une façon d'atténuer ce problème serait d'utiliser des ID Unique universel (UUID).
Vous n'aurez plus le problème de l'auto-incrémentation de la base de données l'analyse et l'utilisateur ne peut pas modifier les URL afin d'obtenir les différentes données.
Vous pouvez très facilement modifier votre base de données à l'appui de cette dans votre migrations en changeant votre colonne id de
ce:
:
Votre modèle peut ensuite être édité à l'appui de la non-incrémentation de clé primaire en ajoutant ce qui suit à votre classe:
OriginalL'auteur Josh Bolton
Vous pouvez chiffrer la route dans votre contrôleur tout en réorientant, à l'aide de
\Crypt::encrypt(product_id)
et sur la page du produit, vous pouvez déchiffrer l'ID de produit à partir de l'URL à l'aide de
$product_id = \Crypt::decrypt($url_parameter)
que de la meilleure façon possible.
Mais il y aura quelques chances d'exception si l'utilisateur de Modifier le paramètre d'ID Produit à partir de l'URL dont vous aurez besoin pour gérer.
OriginalL'auteur Akshay Khale
Vous ne voulez pas de chiffrer toutes les routes, c'est une mauvaise pratique. Vous pouvez utiliser
encrypt()
de l'aide pour chiffrer le paramètre etdecrypt()
pour le décrypter.https://laravel.com/docs/5.3/encryption#using-the-encrypter
OriginalL'auteur Alexey Mezenin
Vous avez besoin de chiffrer URL ID/Tous les param URL, ce qui est appelé id de l'obscurcissement. Vous pouvez le faire avec hashids bibliothèque. il convertit un entier tel que 347 à yr8 et de retour à nouveau.
Inclure cette librairie:
Vous pouvez obtenir toutes les autres choses faciles de Facile d'id de l'obfuscation avec Laravel 5
Cela va vous aider à chiffrer URL id:
À
Espère que cela va vous aider à bien!
http://example.com/users/Mj3
àhttp://example.com/hjksdhsdfssdf8/Mj3
Je ne pense pas qu'il est nécessaire d'inclure un paquet pour cette simple fonction. Si le demandeur a été de descendre cette route, sûrement, il serait préférable de créer une fonction simple de la demande qui n'est pas aussi lourd que le paquet qui vous suggérez.
vous avez raison, mais c'est ce quelque chose de différent. Vous pouvez prendre exemple comme youtube URL.
OriginalL'auteur AddWeb Solution Pvt Ltd
Il semble que vous voulez chiffrer l'intégralité de l'itinéraire. Il peut ne pas être une bonne pratique, mais voici comment le faire. Vous aurez un contrôleur qui reçoit toutes les demandes. Toute la logique métier doivent être placés dans vos services.
Dans le fichier de route ont une route qui pointe vers "/{chiffré}" et à un contrôleur@méthode (le nom est à vous de voir).
Dans la méthode du contrôleur, décoder les param. Peut-être déchiffrées chaîne est "item/100". Ensuite, vous aurez besoin de
$routeParams = explode('/', $decrypted);
et de l'envoyer à un service pour le processus. par exemple,if($routeParams[0] == 'item') {
return ItemService::get($routeParams[1]);
}
C'est l'idée de base. Mais dans la pratique, vous disposez classe de gestionnaire qui gère le routage chiffrée de vos URL. Dans cette classe de gestionnaire, vous aurez besoin d'avoir un tableau de config qui fonctionne de la même façon Laravel du fichier de route.
OriginalL'auteur JC Lee