You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by bu...@apache.org on 2004/04/14 17:31:35 UTC

DO NOT REPLY [Bug 28382] New: - differentiating between hidden fields by sematics to make Tapestry more secure

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=28382>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=28382

differentiating between hidden fields by sematics to make Tapestry more secure

           Summary: differentiating between hidden fields by sematics to
                    make Tapestry more secure
           Product: Tapestry
           Version: 3.0
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: Framework
        AssignedTo: tapestry-dev@jakarta.apache.org
        ReportedBy: programozas@hotmail.com


I'm currently developing a very security critical web application using 
Tapestry. I would like to use the default components, not to reinvent the wheel.
I will disable BACK button (using server side solutions), encode all links to 
prevent "trial and error", and I would like to store the rewind-related hidden 
field values in a custom location: in the session.



There are two types of hidden fields stored in a Form (I will refer to them 
later as category 1 and 2):
1. Hidden fields which will be modified on the client side because of user 
interaction or browser events.
2. Hidden fields which are NOT intended to modify on the client side because 
the modification of them will result some server side exception or security 
risk. The following components create such hidden fields: Form, ListEdit, 
FormConditional.

Tapestry should have some simple functionality to allow the application to 
protect the hidden fields in category 2 from talented professional hackers. I 
have the following simple idea.

Form should have two separate method for adding hidden values: addHiddenValue() 
and addSecureHiddenValue() (this method name is only for the example).
addHiddenValue() would be for adding hidden fields in category 1, 
addSecureHiddenValue() for adding hidden fields in category 2.
For example ListEdit and FormConditional would use addSecureHiddenValue(), but 
Hidden would use addHiddenValue().

The default implementation of addSecureHiddenValue() would be simply calling 
addHiddenValue() but application developers would have the possibility to 
subclass Form and provide their own addSecureHiddenValue() implementation. This 
implementation could be for example:
- encrypt the hidden field values using RSA
- storing them in the session (this would require some more support from 
Tapestry because in this case session attributes may act as request parameters)

Norbi

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org