Let's move this to the developers list. Ok but I would simplify. How about 
we make a whitelist instead of a blacklist? Also the fix as proposed can 
create key conflicts. How about we simply make the 

key = re.compile('\W+').sub('-',key)+'-'+hashlib.md5(key).hexdigest()


On Tuesday, 9 December 2014 06:10:17 UTC-6, Leonel Câmara wrote:
>
> The fix for this could be relatively straightforward you would replace 
> invalid chars in the key. For instance in cache.py > CacheOnDisk > 
> PersistentStorage you could have something like this in the __init__
>
> self.invalid_chars_regex = re.compile(r"""[\\ / \: \* \? "\< \> |]+""")
>
> Then you could add a method like this:
>
>         def fix_key_name(self, key):
>             def encode_invalid(m):
>                 s = m.group()
>                 import base64
>                 return base64.b16encode(s)
>             return self.invalid_chars_regex.sub(encode_invalid, key)
>
> Then you would pass the key trough this in __getitem__, __setitem__, get, 
> etc.
>
> key = self.fix_key_name(key)
>
>
> This sort of fixes the issue.
>
> The problem is that cache clear allows regex removals which will break 
> with this, as in - they will not remove certain items with these special 
> characters. Another problem is that you could very carefully craft 
> different keys that would collide with these regex replaced keys although 
> they were in fact different keys.
>
> I've attached a cache.py with these modifications that you can use while I 
> (or any of you guys really) think of a better and definite solution.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to