I think Anthony is right. His suggested fix is now in trunk. Give it a try.

On Sunday, 5 August 2012 23:21:53 UTC-5, Anthony wrote:
>
> With xmlescape, HTML helpers should still work fine -- xmlescape does not 
> escape helpers, only the components within the helpers (I think it 
> basically replicates the escaping behavior of web2py views):
>
> >>> xmlescape(A("Hello World", _href="#"))
> '<a href="#">Hello World</a>'
>
> However, with xmlescape, raw HTML will now be escaped:
>
> >>> xmlescape('<a href="#">Hello World</a>')
> '&lt;a href=&quot;#&quot;&gt;Hello World&lt;/a&gt;'
>
> Of course, that can be avoided as usual with XML():
>
> >>> xmlescape(XML('<a href="#">Hello World</a>'))
> '<a href="#">Hello World</a>'
>
> I see this as fixing a security bug rather than a backward compatibility 
> issue. Regular flash messages are escaped, along with everything else in 
> the view -- why not escape Ajax flash messages?
>
> Anthony
>
> On Sunday, August 5, 2012 11:45:21 PM UTC-4, Massimo Di Pierro wrote:
>>
>> I think
>>
>>     response.flash = A("Hello World", _href="#") 
>>
>> should be allowed. It was always allowed. This is a backward 
>> compatibility issue. Yet I see there is a potential security issue there.
>> I am not sure what the exact solution should be. Perhaps automatic 
>> sanitization of flash messages before response?
>>
>>     response.flash = XML(str(response.flash), sanitize=True).xml()
>>
>>
>> On Aug 5, 2012, at 10:22 PM, Niphlod wrote:
>>
>> Would serialized HTML messages be escaped then ?
>>
>> What if someone uses response.flash = A("Hello World", _href="#") ?
>>
>> On Monday, August 6, 2012 4:50:31 AM UTC+2, Anthony wrote:
>>>
>>> Bump. Should we replace str() with xmlescape() so Ajax flash messages 
>>> get escaped, just like regular flash messages and everything else in the 
>>> view?
>>>
>>> Anthony
>>>
>>> On Saturday, August 4, 2012 9:23:53 PM UTC-4, Anthony wrote:
>>>>
>>>> On Saturday, August 4, 2012 7:00:18 PM UTC-4, dbdeveloper wrote:
>>>>>
>>>>>  I do not understand what the problem with decodeURIComponent()?
>>>>>
>>>>
>>>> When I tried trunk, I think there was a problem with the encoding of my 
>>>> controller file (ANSI instead of UTF-8) -- in that case, I guess 
>>>> urllib2.quote didn't yield the correct output for decodeURIComponent (same 
>>>> problem in the earlier version, when the escaping was done on the client 
>>>> side via the Javascript escape() function). Now it works.
>>>>
>>>> In any case, a remaining issue is that there's still no escaping of 
>>>> potentially dangerous content in the flash message. Everything written to 
>>>> HTML by web2py is typically escaped, including regular flash messages. The 
>>>> only content that isn't getting escaped are flash messages for Ajax 
>>>> components. To be consistent (and safe), we should probably escape those 
>>>> messages as well (you can always put them in an XML() if you don't want 
>>>> them escaped, as with any template content). In main.py, I replaced:
>>>>
>>>> urllib2.quote(str(response.flash).replace('\n',''))
>>>>
>>>> with:
>>>>
>>>> urllib2.quote(xmlescape(response.flash).replace('\n',''))
>>>>
>>>> With that change, the flash message still looks fine (see screenshot 
>>>> below).
>>>>
>>>> Anthony
>>>>
>>>>
>>>> <https://lh3.googleusercontent.com/-Z8G64F_zCv4/UB3KLUoUcGI/AAAAAAAABK8/sO9okzpFtJ4/s1600/flash.png>
>>>>
>>>>
>>>>
>>>>  
>> -- 
>> -- mail from:GoogleGroups "web2py-developers" mailing list
>> make speech: web2py-develop...@googlegroups.com
>> unsubscribe: web2py-developers+unsubscr...@googlegroups.com
>> details : http://groups.google.com/group/web2py-developers
>> the project: http://code.google.com/p/web2py/
>> official : http://www.web2py.com/
>>  
>>  
>>
>>
>>

-- 



Reply via email to