But it doesn't even have to have the ".wo" on the end of the page name for this 
hack to work.  If the app has a "SecretPage.wo" component, then a URL like this 
will instantiate and return it:

   https://myhost.mydomain/cgi-bin/WebObjects/MyApp.woa/wo/SecretPage//88.99

- Patrick


On Apr 9, 2012, at 10:10 AM, Mike Schrag wrote:

> probably just catch any time you have a ".wo" in your URL and throw ... you 
> could do it in the url rewriter or something. i don't think there's ever any 
> reason to have a .wo reference in a normal app.
> 
> ms
> 
> On Apr 9, 2012, at 10:00 AM, Patrick Robinson wrote:
> 
>> Yeah, that _does_ sound rather annoying!  :-P
>> 
>> Is there a perhaps less-annoying way to approximate similar behavior?
>> 
>> 
>> On Apr 5, 2012, at 2:46 PM, Mike Schrag wrote:
>> 
>>> I changed this in WO core, and unfortunately it's kind of annoying to fix 
>>> without some hackery, but in WOComponentRequestHandler, there's a static 
>>> method requestHandlerValuesForRequest ... That dictionary has a key named 
>>> "wopage" in it. If you did some class rewriting (with like gluonj or 
>>> something), you could change that static method to remove the wopage key 
>>> ... That MIGHT be enough to do it.
>>> 
>>> On Apr 5, 2012, at 2:39 PM, Patrick Robinson wrote:
>>> 
>>>> I've stumbled across a wrinkle re: what I had assumed to be the 
>>>> conventional wisdom for preventing direct access to component pages via 
>>>> URLs like the following:
>>>> 
>>>> http://myhost.mydomain/cgi-bin/WebObjects/MyApp.woa/-9876/wo/SecretPage.wo
>>>> 
>>>> It's an old, old WO problem, and I'm wondering what other people do to 
>>>> handle it.
>>>> 
>>>> I've always figured the best idea is to just configure the web server to 
>>>> catch WO URLs that end in /wo/(.+)\.wo and rewrite or redirect them.  
>>>> Another potential approach is to try to recognize and catch such requests 
>>>> in the app itself, somewhere like the Application class's pageWithName.  
>>>> The problem is, these solutions don't catch all the sneaky ways of 
>>>> slipping in a back door.
>>>> 
>>>> Consider:
>>>> 
>>>> http://myhost.mydomain/cgi-bin/WebObjects/MyApp.woa/-9876/wo/SecretPage.wo//1.2
>>>> 
>>>> This ends up with Application's pageWithName trying to create a page with 
>>>> the name "SecretPage".  A new session has already been created somewhere 
>>>> down inside the component request handler, it'll have a WOContext with a 
>>>> contextID of 0, and the senderID will be 2.  You'd be hard-pressed to know 
>>>> that you shouldn't allow the page creation to proceed.
>>>> 
>>>> You could try to change the web server's search pattern to also catch a 
>>>> slash followed by more characters after the ".wo", but you'd have to be 
>>>> careful not to disallow sessionIDs that just happen to end in "wo".  And 
>>>> even if you could reliably block the above, the hacker could try this:
>>>> 
>>>> http://myhost.mydomain/cgi-bin/WebObjects/MyApp.woa/-9876/wo/SecretPage.wox//1.2
>>>>  (that is, add more characters after the ".wo")
>>>> 
>>>> Now that doesn't fit the pattern at all, and gets hung up in the 
>>>> Application's pageWithName, where a way-too-informative 
>>>> WOPageNotFoundException is thrown.  Of course, you'd catch that somewhere 
>>>> like handleException().  Doesn't quite seem like the right approach, 
>>>> either.
>>>> 
>>>> My point here is, there are more ways of hacking a WebObjects URL than I 
>>>> had previously considered.  Does anyone have what they consider to be an 
>>>> ironclad solution to this problem?
>>>> 
>>>> (I hate it when I discover stuff I thought I had dealt with 10 years ago 
>>>> is still biting me.)
>>>> 
>>>> - Patrick
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>> Help/Unsubscribe/Update your Subscription:
>>>> https://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com
>>>> 
>>>> This email sent to msch...@pobox.com
>>> 
>> 
> 


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to