diff --git a/appveyor.yml b/appveyor.yml index d452c99..7d105de 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,6 @@ version: 3.4.{build} skip_tags: true +image: Visual Studio 2017 environment: CoverityProjectToken: secure: pUUrynbyxCRpsAgGdKBVYDZCilwBmaWQ1Jg+rg5znr0= diff --git a/src/HtmlSanitizer/HtmlSanitizer.cs b/src/HtmlSanitizer/HtmlSanitizer.cs index 0cfcf68..8e0bac2 100644 --- a/src/HtmlSanitizer/HtmlSanitizer.cs +++ b/src/HtmlSanitizer/HtmlSanitizer.cs @@ -528,17 +528,13 @@ namespace Ganss.XSS { if (!AllowedAtRules.Contains(rule.Type)) return false; - var styleRule = rule as ICssStyleRule; - - if (styleRule != null) + if (rule is ICssStyleRule styleRule) { SanitizeStyleDeclaration(styleTag, styleRule.Style, baseUrl); } else { - var groupingRule = rule as ICssGroupingRule; - - if (groupingRule != null) + if (rule is ICssGroupingRule groupingRule) { for (int i = 0; i < groupingRule.Rules.Length;) { @@ -548,23 +544,20 @@ namespace Ganss.XSS else i++; } } - else if (rule is ICssPageRule) + else if (rule is ICssPageRule pageRule) { - var pageRule = (ICssPageRule)rule; SanitizeStyleDeclaration(styleTag, pageRule.Style, baseUrl); } - else if (rule is ICssKeyframesRule) + else if (rule is ICssKeyframesRule keyFramesRule) { - var keyFramesRule = (ICssKeyframesRule)rule; foreach (var childRule in keyFramesRule.Rules.OfType().ToList()) { if (!SanitizeStyleRule(childRule, styleTag, baseUrl) && RemoveAtRule(styleTag, childRule)) keyFramesRule.Remove(childRule.KeyText); } } - else if (rule is ICssKeyframeRule) + else if (rule is ICssKeyframeRule keyFrameRule) { - var keyFrameRule = (ICssKeyframeRule)rule; SanitizeStyleDeclaration(styleTag, keyFrameRule.Style, baseUrl); } } diff --git a/test/HtmlSanitizer.Tests/Tests.cs b/test/HtmlSanitizer.Tests/Tests.cs index b573934..1441f44 100644 --- a/test/HtmlSanitizer.Tests/Tests.cs +++ b/test/HtmlSanitizer.Tests/Tests.cs @@ -1954,7 +1954,7 @@ rl(javascript:alert(""foo""))'>"; } [Fact] - public void capitalExpressionTest() + public void CapitalExpressionTest() { var sanitizer = Sanitizer; var html = @"
XSS
"; @@ -2127,8 +2127,10 @@ rl(javascript:alert(""foo""))'>"; [Fact] public void AllowDataAttributesTest() { - var sanitizer = new HtmlSanitizer(); - sanitizer.AllowDataAttributes = true; + var sanitizer = new HtmlSanitizer() + { + AllowDataAttributes = true + }; var html = @"
"; Assert.Equal(html, sanitizer.Sanitize(html), ignoreCase: true); } @@ -2136,8 +2138,10 @@ rl(javascript:alert(""foo""))'>"; [Fact] public void AllowDataAttributesCaseTest() { - var sanitizer = new HtmlSanitizer(); - sanitizer.AllowDataAttributes = true; + var sanitizer = new HtmlSanitizer() + { + AllowDataAttributes = true + }; var html = @"
"; Assert.Equal(html, sanitizer.Sanitize(html), ignoreCase: true); } @@ -2145,8 +2149,10 @@ rl(javascript:alert(""foo""))'>"; [Fact] public void AllowDataAttributesOffTest() { - var sanitizer = new HtmlSanitizer(); - sanitizer.AllowDataAttributes = false; + var sanitizer = new HtmlSanitizer() + { + AllowDataAttributes = false + }; var html = @"
"; Assert.Equal(@"
", sanitizer.Sanitize(html), ignoreCase: true); } @@ -2165,8 +2171,7 @@ rl(javascript:alert(""foo""))'>"; var sanitizer = new HtmlSanitizer(); sanitizer.PostProcessNode += (s, e) => { - var el = e.Node as IHtmlElement; - if (el != null) + if (e.Node is IHtmlElement el) { el.ClassList.Add("test"); var b = e.Document.CreateElement("b"); @@ -2185,8 +2190,7 @@ rl(javascript:alert(""foo""))'>"; var sanitizer = new HtmlSanitizer(); sanitizer.PostProcessNode += (s, e) => { - var text = e.Node as IText; - if (text != null) + if (e.Node is IText text) { var autolinked = Regex.Replace(text.NodeValue, @"https?://[^\s]+[^\s!?.:;,]+", m => $@"{m.Value}", RegexOptions.IgnoreCase); if (autolinked != text.NodeValue) @@ -2620,8 +2624,10 @@ rl(javascript:alert(""foo""))'>"; { // https://github.com/mganss/HtmlSanitizer/issues/66 - var sanitizer = new HtmlSanitizer(); - sanitizer.AllowDataAttributes = true; + var sanitizer = new HtmlSanitizer() + { + AllowDataAttributes = true + }; sanitizer.AllowedSchemes.Add("data"); var html = @"

{ // https://github.com/mganss/HtmlSanitizer/issues/80 - var s = new HtmlSanitizer(); - - s.AllowDataAttributes = true; + var s = new HtmlSanitizer() + { + AllowDataAttributes = true + }; s.AllowedAtRules.Add(CssRuleType.FontFace); s.AllowedTags.Add("style");