but if i use external security mechanism, will it be dynamic? i mean to say,
if the admin wants to change his/her password from the application
(using admin interface), how can he/she do that without restarting the
server? 

> -----Original Message-----
> From: Martin Duffy [SMTP:[EMAIL PROTECTED]]
> Sent: Monday, May 07, 2001 5:57 PM
> To:   [EMAIL PROTECTED]
> Subject:      Re: Potential Security Flaw in Struts MVC
> 
> A basic problem with most web development is that people are building
> security into their applications. It should be handled outside of the
> application. You can have your application work in conjunction with an
> external security mechanism for more granular control but I the security
> mechanism should be external to the application for the most part.
>  
> You could use for example one of the authorization and access modules for
> apache. Then when you create your application you can create specific
> *protected* URLs for say an admin area. Then only the person that is
> logged into the security mechanism with the proper *authorization*  can
> access that URL (or one that contains that URL and parameters being passed
> to it in the URL). Security needs to be considered when building the
> applications but trying to build it into the application is a big mistake.
> 
>  
> A big reason to not build it into the app is that as your security
> requirements change you invariably have to make code changes to your
> application. By using an external mechanism you just change the rules
> governing the authorization and access control usually without any code
> changes to your app.
>  
>  
>  
>  
> 
>       ----- Original Message ----- 
>       From: Jeff Trent <mailto:[EMAIL PROTECTED]> 
>       To: [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]> 
>       Sent: Monday, May 07, 2001 6:37 PM
>       Subject: Potential Security Flaw in Struts MVC
> 
>       I may be wrong about this (only been working w/ Struts for a week
> now).  But I do see a potential security flaw in struts that I would like
> to hear from others regarding.
>        
>       Consider a simple set of struts classes that represent a user in a
> system. You would probably have classes that look something like this:
>           User                (the model representing the user)
>           UserForm        (an enrollment form for a new user)
>           UserAction        (Saves the UserForm information to db, etc)
>           
>       The User class would have accessors and modifiers like
> getFirstName(), setFirstName(), getAdministrativeUserFlag(),
> setAdministrativeUserFlag(), etc.  The basic implementation of the
> UserForm is to take the UI form data, introspect the beans, and call the
> correct modifier of the UserForm bean based on the fields contained within
> the UI submission/form.  A developer of course would not expose the
> "Administrative User Flag" option on the UI for enrollment (that would be
> found possibly in some other administrative-level module).  However, if
> someone is familiar with the db schema and the naming convention the
> developer used, that user could subvert the application by writing his own
> version of the UI which contains an "Administrative User Flag" field (or
> any other field for that matter) and the basic form processing in Struts
> will kindly honor the request and set the "Administrative Flag" on the
> user.  Unless, of course, the developer makes special provisions to
> prevent this behavior.  However, its not entirely obvious to the struts
> user (in my opinion) that this is even a concern.  Am I making sense here?
>        
>       - jeff
>        
> 

Reply via email to