AIUI, the suggestion is to default to sanitizing before writing to innerHTML so 
that someone who does let someone type in "anything" and shoves it into a 
Label's htmlText won't have their app used to run various exploits.

If a volunteer can propose a design that defaults to sanitizing and can easily 
be removed leaving very little unused code so that it can be effectively PAYG, 
I would not veto it.  That design might include removing the htmlText property 
on Basic Label unless someone is already using it.  I only put it in there for 
Flash equivalence, but isn't really a PAYG thing to do if nobody is using it.

MX Label really only needs to support the Flash HTML subset, so might not need 
a third-party sanitizer.

HTH,
-Alex

On 12/10/21, 2:26 AM, "Harbs" <harbs.li...@gmail.com> wrote:

    Sanitizing what? And why?

    What is the use case which is “dangerous”?

    > On Dec 10, 2021, at 11:49 AM, Edward Stangler <estang...@bradmark.com> 
wrote:
    > 
    > 
    > My mistake.
    > 
    > Definitely should be sanitizing.  If you want PAYG, then make it default
    > (some global function) and something that can be overridden by those who
    > want to live dangerously.
    > 
    > 
    > On 12/10/2021 3:07 AM, Harbs wrote:
    >>> It looks to me that most uses of innerHTML in Royale are assigning text
    >>> to various labels (like Button).
    >> I’m not sure which case you’re referring to.
    >> 
    >> Ignoring examples, ASDoc and RoyaleSite, here is every use of innerHTML 
in the framework with comments:
    >> 
    >> HTMLText -- A component created specifically for applying innerHTML. It 
would generally be used in mxml where the content would be provided by the 
develper
    >> ImageAndTextButton -- Uses innerHTML to combine text and and img tag. I 
guess it could be safer if it would use Image and TextNode elements.
    >> Label -- has an html getter/setter which is clearly for markup so 
innerHTML is necessary.
    >> LoadIndicator -- uses innerHTML, but the markup is generated internally 
and not exposed, so not a risk.
    >> TextButton -- has an html getter/setter which is clearly for markup so 
innerHTML is necessary. It has a separate text getter/setter which *does not* 
use innerHTML
    >> UnselectableElementBead --  uses self-generated innerHTML for setting a 
style. Not a risk.
    >> addDynamicSelector --  uses innerHTML for setting a style but only the 
first time it's used. Should not be a risk.
    >> InspireTreeIconBead -- similar to UnselectableElementBead
    >> Flat DropDownList -- uses innerHTML in six places. I don't know why.
    >> Graphics -- uses innerHTML for self generated markup. Not a risk.
    >> TextNodeContainerBase has an innerHTML getter/setter because it's 
emulating the corresponding HTML elements.
    >> InnerHTML -- is (as its name suggests) a component for setting innerHTML.
    >> Jewel Button -- has an html getter/setter which is clearly for markup so 
innerHTML is necessary. It has a separate text getter/setter which *does not* 
use innerHTML
    >> Jewel Label -- has an html getter/setter which is clearly for markup so 
innerHTML is necessary. It has a separate text getter/setter which *does not* 
use innerHTML
    >> Jewel SnackbarView uses innerHTML for the "message". I don't know why.
    >> MX Button -- I found it used innerHTML which should have been 
textContent. Fixed.
    >> MX Label -- has htmlText getter/setter which is clearly for markup so 
innerHTML is necessary.
    >> MX TinyEditor -- has htmlText getter/setter which is clearly for markup 
so innerHTML is necessary.
    >> MX UITextField -- has htmlText getter/setter which is clearly for markup 
so innerHTML is necessary.
    >> MX UITextFormat -- uses innerHTML for measuring. Should be safe.
    >> Spark ButtonBase -- uses innerHTML. I don't know why.
    >> Spark DropDownListButton -- uses innerHTML to draw the skin. The label 
is part of that. It's possible that should be sanitized.
    >> TextLine -- uses innerHTML in two places where textContent could likely 
be used, but the string it's using came from textContent, so it should not be a 
risk.
    >> 
    >> Summary:
    >> Ones which could use looking into:
    >> ImageAndTextButton
    >> Flat DropDownList
    >> Jewel SnackbarView
    >> Spark ButtonBase
    >> Spark DropDownListButton
    >> 
    >> I’m not personally very familiar with either Jewel or the Spark 
components, so someone else should comment on those.
    >> 
    >> The other risky area in HTML is setting “src” for Image tags and the 
like.
    >> 
    >> We’re not sanitizing that, but again, I’m not sure what the attack would 
be.
    > 


Reply via email to