Re: #disabled: + #callback:
Johan Brichau <[email protected]>
| Newsgroups | gmane.comp.lang.smalltalk.squeak.seaside |
|---|---|
| Message-ID | <[email protected]> |
NEVER rely on client-side for security or related checks. ALWAYS add server-side checks too. If you want seaside to disable the callbacks on a disabled button, it will need still need to make a server call, which can also be intercepted/hacked. It would be a false sense of security. Of course, it might be handy but do not rely on it. Cheers, Johan > On 27 Feb 2017, at 20:52, Sean Glazier <[email protected]> wrote: > > That works as well and is easier to do. the app I did we had to be much more anal about everything > > > Kind Regards, > > Sean Glazier > > >> On Mon, Feb 27, 2017 at 2:15 PM, Sven Van Caekenberghe <[email protected]> wrote: >> Hi Paul, >> >> > On 27 Feb 2017, at 17:35, PAUL DEBRUICKER <[email protected]> wrote: >> > >> > Hi - >> > >> > >> > If in a Seaside form (3.2.1 but not sure it matters) you have an input with a callback (& e.g #onChange: handler) and set its state to 'disabled' a nefarious actor can remove the 'disabled' state from the form element in the browser and then trigger the seaside callback on the form submit. >> >> Well, I had a problem very close to that, that actually cost me real money ! >> >> In a shopping cart I used <A> tags that rendered as buttons (Bootstrap), disabling them when the user was not supposed to continue (as in not order for free from a far away country ;-). The continue button looked disabled, but it wasn't. >> >> So I ended up doing >> >> renderContinueOn: html >> | anchor | >> html space. >> (anchor := html anchor) >> class: 'btn btn-primary'; >> disabled: self canContinue not. >> "since <A> cannot really be disabled, do not add a callback !" >> self canContinue ifTrue: [ anchor callback: [ ... ] ]. >> anchor with: [ .. ] >> >> It was of course my own fault, but it would be nice if calling disabled: false on a Seaside component had the effect of disabling callbacks as well. >> >> Sven >> >> > How do people usually handle this? >> > >> > >> > >> > Right now in critical places I have two sets of form-input-drawing code e.g. >> > >> > disable >> > ifTrue:[ html textInput >> > disabled: true; >> > value: self name ] >> > ifFalse:[ html textInput >> > onChange: html jQuery ajax serializeThis; >> > on: #name of: self]. >> > >> > But in other places I am neglectful. >> > >> > >> > It seems to me that if I moved the #disabled: send down to be the last thing sent to the input then I could modify the #disabled: method to wipe out the callback and any javascript handlers attached to the input, preventing the unlikely attack I mention above. >> > >> > >> > Does that make sense? >> > >> > >> > Thanks for any thoughts you care to share >> > >> > >> > Paul >> > >> > >> > >> > >> > _______________________________________________ >> > seaside mailing list >> > [email protected] >> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> _______________________________________________ >> seaside mailing list >> [email protected] >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > [email protected] > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside _______________________________________________ seaside mailing list [email protected] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside