Question : problème de sécurité dans l'application d'ouverture : un utilisateur ouvert une session peut éditer elle ou son propre profil

Bonjour amis. J'ai trouvé un problème de sécurité dans mon application d'ouverture. C'est l'application de NBPTS qui est à ce jour bien connue à bon nombre d'entre vous dans le forum de CFML. =) l'utilisateur ouvert une session par A peut éditer elle ou son propre profil : rel= " nofollow " de " _blank " de target= de " http://www.nbptsprincipals.org/principal/principal_registration.cfm?UserID=160 " de href= du

.org/principal/principal_registration.cfm de http://www.nbptsprincipals ? UserID=160

But en changeant simplement, dans le domaine d'endroit de navigateur, la valeur UserID=160 en une autre identification de l'utilisateur, elle peut regarder et éditer d'autres identifications de l'utilisateur aussi !

Is là une manière de fixer des identifications de l'utilisateur ? Y a-t-il un rapport que je peux m'ajouter à la fonction d'onRequestStart dans application.cfc pour rejeter l'édition d'autres identifications de l'utilisateur ? le rapport du

The devrait indiquer : est-ce que

* si l'utilisateur ouvert une session a UserRoleID 5, elle peut-elle éditer seulement son UserID.

* si l'utilisateur ouvert une session a UserRoleID 3, il peut éditer des identifications de l'utilisateur avec UserRoleID 5, et son propre UserID.

* si l'utilisateur ouvert une session a UserRoleID 1, elle peut-elle éditer tout l'UserIDs.

How j'ajouterait cette logique à ma fonction existante d'onRequestStart ?

Thank vous en tant que toujours pour tout advice.

Eric B
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
>< " de l'id= " codeSnippet839998 de
 
name= " onRequestStart " de 

    required=/> " vrai " de " targetPage " de name= de " corde " de type= de   
    securefolders de variété de   
    currentFolder de variété de  < ! --- l'endroit courant de l'utilisateur ---->  


< ! --- qualifications de processus d'ouverture --->

 < ! --- commencer le cfif isDefined (« form.userEmail ») et isDefined (« form.userPassword ») ---> 
    le  
         < ! --- la boîte de contrôle pour se rappeler UserEmail a été vérifiée, ainsi faire un biscuit pour lui ---> 
                le  
          expires= " 7 " du value= " #form.UserEmail# " de " SaveUserEmail " de name= de  
         
         
        < ! --- l'utilisateur essaye d'ouvrir une session, ainsi traiter la demande d'ouverture ----> 
        checkLogin de  
           template= " LoginForm.cfm " de  < ! --- l'ouverture a échoué, ainsi forme d'ouverture d'exposition ----> 
           false> de  
         
    < ! --- le cfif étroit isDefined (« form.userEmail ») et isDefined (« form.userPassword ») et isDefined (« form.doLogin ») ---> 
     
 
< ! --- qualifications d'ouverture de /process --->




< ! --- déterminer l'accès aux secureFolders --->
     listFindNoCase de  < ! ---- sommes-nous dans une zone protégée ? --->  
       le  < ! --- C'est une zone protégée, si l'utilisateur n'est pas ouvert une session, vont ouvrir une session la page ---->  
           template= " LoginForm.cfm " de 
            le message= de 
             
        < ! --- l'utilisateur est ouvert une session, puis des rôles de contrôle ---->  
           expression= " #currentFolder# " de   
              value= " admin " de   
                  eq du listFind de  < ! ---- le rôle 1 a accès à l'admin --->  
                      template= " LoginError.cfm " de 
                        
                    
                
              value= " liaison " de   
                  eq du listFind de  < ! ---- les rôles 1, 3 ont accès à la liaison --->  
                      template= " LoginError.cfm " de 
                        
                    
                
               < ! ---- toutes autres chemises bloquées ---->  
                
             
        < ! ---- finir si l'utilisateur est ouvert une session ou pas ---->  
     < ! ---- finir si l'utilisateur est dans une zone protégée ou pas ---->  
    
    < ! --- /test pour l'accès aux secureFolders --->
         
      
      clearSessionVariables de 
      
      false> de 
  

    
    
         
         
             < ! --- si query_string contient la fonte (, alors l'arrêt ! --->                                              
    le 
      
    

   
  < ! --- fonction étroite : onRequestStart --->
class= de

Réponse : problème de sécurité dans l'application d'ouverture : un utilisateur ouvert une session peut éditer elle ou son propre profil

Bien, dedans

      {33, « B »}, {22, « C »}, {22, « D »}, {44, « E »}, {22, « D »}

vous avez qu'entrée très double - l'enlever juste après qu'elle soit assortie, par exemple.
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 :
96 :
97 :
#include  
#include  
#include  
#include  
#include  
#include  
#include  

using namespace DST ;

struct StudentAttempt
{
   distance d'international ;
   studentName de corde ;
} ;

bool cmpEntry (StudentAttempt laissé, droit de StudentAttempt) {
   == de retour right.studentName du && left.studentName du == right.distance de left.distance ;
}
cmpAttempts de bool (StudentAttempt laissé, droit de StudentAttempt) {
   si (left.distance < right="">et v, StudentAttempt& SA, stringstream& solides solubles de const) {

   vecteur : : const_iterator i = v.begin () ;
  size_t la SZ = 0 ;
  le bFirst de bool = rectifient ;

  tandis que (I ! = v.end ()) {

    si (isDistEqual (*i, SA)) {
    
      si (! studentName du bFirst) <>solides solubles ;
      ++sz ;
    }

    ++i ; 
    bFirst = faux ;
  }

  la SZ de retour ;
}
 

force d'international () {

   throwDist de StudentAttempt [] = {
      {50, « A »},      {22, « A »},      {16, « B »},      {44, « C »},
      {33, « D »},      {34, « E »},      {22, « F »},      {21, « G »},
      {49, « A »},      {5, « B »},      {2, « C »},      {22, « A »},
      {33, « B »},      {22, « C »},      {22, « D »},      {44, « E »}, {22, « D »}
   } ;


   ensemble manipulé ;

   international len = sizeof) (de throwDist/sizeof (throwDist [0]) ;

   dist de vecteur (le throwDist, throwDist + len) ;
   vecteur : : iterator il = dist.begin () ;

   sorte (dist.begin (), dist.end (), cmpAttempts) ;

   unique (dist.begin (), dist.end (), cmpEntry) ; // enlève les reproductions identiques du vecteur assorti


   pour (; il ! = dist.end () ; it++) {

      stringstream solides solubles ;

      paires : : iterator, bool> p = handled.insert (it->distance) ;

      si (! p.second) continuent ; // déjà manipulé

      si (0  < printAllEqual="">
           
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us