Hi, This may be a little off topic, but I thought I'd ask what the experts thought. Many actions often take URL parameters. For example a catalog system's "viewItem" action might include an id number for the item you wish to view. The action uses this ID to pull something out of your RDBMS (ideally through a service interface), sets a request attribute and then forwards to a JSP to show the relevant data.
Now imagine the case where there are complex rules governing who should be able to view what items. Say for example that a certain user can only view one category of items (which would obviously be enforced by the search interface-you would never generate a link to something they weren't supposed to see in your search results). What is the best way in general to ensure that the user is not playing around with url parameters (in this example by manipulating the id parameter) to get at things they shouldn't. Assume for the moment that the RDBMS cannot help you solve the problem.I don't really see how Roles help here because my understanding of Roles is that they only enable and restrict actions. One option is to include the security validation in the ViewItem action itself so it will not just blindly display whatever object the parameters referred to.This seems like a problem that might occur in numerous different places though which means it might be benificial to have something more generic. My other thought was to append a URL parameter that is basically a digital signature of the entire URL+query string (before appending the signature). Assuming for now that the private key is safe on the server, then this would provide a generic way to prove that an incoming request came from a link generated by the site. This approach takes the view that if the user is not meant to see or do something, they are never presented a link in the first place to access it and it is impossible for them to fake a get request that works without knowing the private key. This might introduce peformance concerns.Note that I'm not even talking about public/private key crypto here.. just simple single private key encrypt/decrypt. This would really work for any combination of action+parameters you were concerned about. I was wondering if anyone out there had any better ideas or advice on how they handle this type of problem in an MVC style application while keeping things fairly simple. Ross