it's just only for those who use the parametric router, not for all the 
web2py installations out there.

Il giorno lunedì 19 novembre 2012 17:17:54 UTC+1, jc ha scritto:
>
> I have been thinking a little about this. Niphlod's suggestion solves the 
> problem for me at the moment, but isn't there an enormous problem? It seems 
> that any web2py installation can be taken down accidentally or maliciously 
> just by somebody requesting an invalid argument string in the url of the 
> form 'xxxxxxX' where the 'x's are valid characters and there are enough of 
> them, and the 'X' is invalid? There must be a lot of vulnerable sites out 
> there.
>
> It seems to me there is one easy fix which is to just strip out invalid 
> characters before the regex match. You will get collisions, but since the 
> url is invalid anyway, who cares? Or the string could be urlencoded first 
> so that the invalid characters become % encoded?
>
>
> On Tuesday, November 13, 2012 7:33:26 PM UTC, Jonathan Lundell wrote:
>>
>> On 13 Nov 2012, at 11:20 AM, Niphlod <nip...@gmail.com> wrote:
>>
>> I'm definitely not a regex master, but what's the *[=.]?* part required 
>> for ?
>>
>>
>> The idea (not mine, fwiw) is that you can have multiple strings of [\w@ 
>> -]+ separated or ended (but not begun) with a single . or = (but not 
>> multiple ones). My workaround would allow leading or multiple . or =. I 
>> think we probably should anyway, since we should be assuming that args are 
>> necessarily a file path, which seems to be what's going on there.
>>
>> It's trying to prevent stuff like foo/../../../bar.
>>
>>
>> On Tuesday, November 13, 2012 7:00:32 PM UTC+1, Jonathan Lundell wrote:
>>>
>>> On 13 Nov 2012, at 9:04 AM, Niphlod <nip...@gmail.com> wrote:
>>>
>>> seems a problem with the default regex checking for args.... Let's wait 
>>> for Jonathan
>>>
>>> >>> import re
>>> >>> mymatch = re.compile(r'([\w@ -]+[=.]?)*$')
>>> >>> mymatch.match('a')
>>> <_sre.SRE_Match object at 0x02A61020>
>>> >>> mymatch.match('Abbbbbbbb Lccc - Pddddddd GA Deeeeee (ffff ffff 
>>> A).pdf')
>>>
>>> endless loop of backtracing regex
>>>
>>>
>>> I don't have a quick fix. The easy solutions involve re elements not 
>>> available in Python re (or at least not until 3.1).
>>>
>>> A workaround would be to make the pattern a little more lenient: [\w@ 
>>> -=.]+
>>>
>>> If we really want to exclude successive dots or equals, we could make a 
>>> separate check for that.
>>>
>>
>>
>>
>>
>>

-- 



Reply via email to