Skip to content

AntiSamy fails to parse CSS with modern @media syntax, error: org.w3c.css.sac.CSSParseException: Identifier expected. #639

@ashishkataria86

Description

@ashishkataria86

When sanitizing HTML that includes <style> tags containing modern CSS3 media queries (multiple media queries, separated by commas), AntiSamy throws a CSSParseException originating from Apache Batik’s CSS parser. This causes the entire <style> block to be dropped, even though the CSS is syntactically valid according to modern standards.

Example input:

String dirtyInput = "<style>@media handheld, only screen and (max-device-width: 480px){div, a, p, td, th, li, dt, dd { -webkit-text-size-adjust: auto; }} </style>";
AntiSamy as = new AntiSamy();
CleanResults cr = as.scan(dirtyInput);

Observed exception:

org.w3c.css.sac.CSSParseException: Identifier expected.
    at org.apache.batik.css.parser.Parser.createCSSParseException (Parser.java:1687)
    at org.apache.batik.css.parser.Parser.createCSSParseException (Parser.java:1676)
    at org.owasp.validator.css.CssParser.parseMediaType (CssParser.java:175)
    at org.owasp.validator.css.CssParser.parseMediaQuery (CssParser.java:151)
    at org.owasp.validator.css.CssParser.parseMediaList (CssParser.java:113)
    at org.owasp.validator.css.CssParser.parseMediaRule (CssParser.java:227)
    at org.apache.batik.css.parser.Parser.parseStyleSheet (Parser.java:220)
    at org.owasp.validator.css.CssScanner.scanStyleSheet (CssScanner.java:170)
    at org.owasp.validator.html.scan.AntiSamyDOMScanner.processStyleTag (AntiSamyDOMScanner.java:465)
    at org.owasp.validator.html.scan.AntiSamyDOMScanner.actionValidate (AntiSamyDOMScanner.java:396)
    at org.owasp.validator.html.scan.AntiSamyDOMScanner.recursiveValidateTag (AntiSamyDOMScanner.java:298)
    at org.owasp.validator.html.scan.AntiSamyDOMScanner.processChildren (AntiSamyDOMScanner.java:712)
    at org.owasp.validator.html.scan.AntiSamyDOMScanner.processChildren (AntiSamyDOMScanner.java:704)
    at org.owasp.validator.html.scan.AntiSamyDOMScanner.scan (AntiSamyDOMScanner.java:177)
    at org.owasp.validator.html.AntiSamy.scan (AntiSamy.java:127)
    at org.owasp.validator.html.AntiSamy.scan (AntiSamy.java:105)
    at com.example.App.main (App.java:12)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:279)
    at java.lang.Thread.run (Thread.java:1474)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions