recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Déterminer si l'utilisateur est autorisé à accéder

Il y a un problème : lors de l'interrogation de données via les paramètres d'URL, les données sont généralement interrogées via l'identifiant
Par exemple, si vous souhaitez interroger les détails d'une commande, l'identifiant est l'identifiant de la table des détails de la commande.

"http://localhost/index/order/detail/id/3.html"

Puis-je modifier cet identifiant pour demander les détails de la commande d'autres personnes ?
Lorsque je précise les détails d'une commande, dois-je déterminer s'il s'agit d'une commande de ce client ? Est-ce difficile de juger à chaque fois ?
Ou utiliser le numéro de commande pour interroger ?

仅有的幸福仅有的幸福2756 Il y a quelques jours778

répondre à tous(8)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:03:46

    Lorsqu'un identifiant est passé en arrière-plan, la requête de la base de données n'interroge pas seulement la condition id=id
    Elle apportera également de nombreuses conditions, telles que l'uid de connexion de l'utilisateur, ou le compte utilisateur stocké dans la session

    Bien sûr, vous feriez mieux de faire quelque chose pour empêcher l'injection SQL. Si des personnes accèdent à votre SQL sous la forme id=1";, votre SQL sera très dangereux.

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:03:46

    Le problème des autorisations doit être jugé par le backend. Logiquement parlant, le frontend devrait transmettre un identifiant de commande au serveur (vous transmettez le paramètre url ici), puis le backend recherchera la table et renverra les données au frontend. . Concernant la question des autorisations, le backend peut d'abord déterminer si l'utilisateur a l'autorisation d'appeler cette interface après avoir reçu les informations d'appel d'interface du front-end. Si tel est le cas (et les données logiques sont raisonnables, etc.), les données seront. Si ce n'est pas le cas, il renverra directement qu'il n'y a pas d'autorisation. L'accès est contrôlé de cette manière.

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:03:46

    L'ordre réel prête à confusion. La requête n'est pas vraiment le champ de clé primaire de la table de données, vous devez donc le modifier vous-même

    répondre
    0
  • PHPz

    PHPz2017-05-16 13:03:46

    L'affichage des détails de la commande nécessite au moins deux paramètres, l'identifiant de la commande et l'identifiant de l'utilisateur actuel. Le backend doit d'abord déterminer s'il a reçu correctement ces deux paramètres, puis rechercher les informations de commande correspondantes en fonction de l'ID de commande, puis faire correspondre l'ID d'utilisateur actuel avec l'ID d'utilisateur de commande dans les informations de commande. S'ils sont incohérents, il le fera. ils n'ont aucun droit d'accès.

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:03:46

    1. Vous ne pouvez pas utiliser le même identifiant comme base pour la requête de commande, comme uuid
    2 La table de commande contient le champ duquel se trouvent les données de commande actuelles. Apportez cette condition lors de la requête

    .

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:03:46

    La relation entre l'UID de l'utilisateur et l'ID de commande est &&.

    répondre
    0
  • 黄舟

    黄舟2017-05-16 13:03:46

    Lors de la vérification de la commande, cela devrait être :

    select * from 订单表 where id="id" and uid="uid"; 

    répondre
    0
  • PHPz

    PHPz2017-05-16 13:03:46

    1. Déterminez d'abord si l'utilisateur est connecté et obtenez la session pour déterminer ;
    2. Déterminez si l'utilisateur est autorisé à accéder aux détails de la commande en fonction de l'ID utilisateur.

    répondre
    0
  • Annulerrépondre