You are viewing a plain text version of this content. The canonical link for it is here.
Posted to site-cvs@tcl.apache.org by Apache Wiki <wi...@apache.org> on 2016/09/23 07:58:33 UTC
[Tcl Wiki] Update of "RivetProposals" by MassimoManghi
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Tcl Wiki" for change notification.
The "RivetProposals" page has been changed by MassimoManghi:
https://wiki.apache.org/tcl/RivetProposals?action=diff&rev1=5&rev2=6
Karl wishlist's open points:
+ * a load_response transaction-type thing
+
+ From the original message sent to rivet-dev@tcl.apache.org
+
+ This talk of new capabilities for a new release of Rivet has had me revisiting something I've
+ been thinking about for quite a while...
+
+ It's really easy for developers to use forms in a way that they shouldn't, putting stuff in
+ hidden fields, etc, that could easily be monkeyed with by an attacker. That data needs to
+ be kept server side and accessed with an opaque, unguessable session ID cookie or equivalent.
+ Yes, yes… clear, but not simple, and that friction helps to cause the observed problem.
+
+ It's also super common for developers to accept input from forms with insufficient checks
+ on the validity of the input data, the source of SQL injection attacks and so forth.
+
+ I'm thinking of what you might call a response broker. (This isn't an original idea -- I've
+ read about stuff like this.)
+
+ Rather than doing a load_response, the page handling the response would explicitly name the
+ fields you expect to get from the form, you invoke a proc specifying the fields you expect
+ to find, their data types, optional code to validate them, and an array to stuff the validated
+ fields into.
+
+ set wantVarList {{username string} {id integer} {uid check_routine validate_uid} {password
+ check_routine validate_password} {hash base64} {email email}}
+
+ set status [response_broker $wantVarList response]
+
+ Since every page using the response broker would need to check for response broker parse failures
+ it would probably be nice to be able to specify a general handler routine that would run and
+ then abort the page, removing the need to check the return.
+
+ Now if I run…
+
+ response_broker $wantVarList response
+
+ …if the page continues then the response array would contain validated fields found in the
+ form for the variables named in wantVarList and no others. You might want the presence of
+ unexpected fields to also blow out, but that would be likely to bite you pretty often when
+ the reasons are harmless. Maybe log them and include a {field ignore} option that will inhibit
+ logging for expected-but-ignored fields.
+
+ We've done a form package at FlightAware that has a specific look and feel that allows you
+ to specify both Tcl and Javascript validation code. Of course you still need the Tcl code
+ on the server but it's nice in the modern era to also provide Javascript validation on the
+ browser. We could probably open source if its appearance was genericized or something, but
+ I mention it mainly to point out the usefulness of such an approach both for the developer
+ and the users and a likely need to push Rivet into providing more stuff to support developers
+ making modern websites.
* Named separate virtual interpreters.
---------------------------------------------------------------------
To unsubscribe, e-mail: site-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: site-cvs-help@tcl.apache.org