private bool SanitizeStyleRule(ICssRule rule, IElement styleTag, string baseUrl) { if (!AllowedAtRules.Contains(rule.Type)) { return(false); } var styleRule = rule as ICssStyleRule; if (styleRule != null) { SanitizeStyleDeclaration(styleTag, styleRule.Style, baseUrl); } else { var groupingRule = rule as ICssGroupingRule; if (groupingRule != null) { for (int i = 0; i < groupingRule.Rules.Length;) { var childRule = groupingRule.Rules[i]; if (!SanitizeStyleRule(childRule, styleTag, baseUrl) && RemoveAtRule(styleTag, childRule)) { groupingRule.RemoveAt(i); } else { i++; } } } else if (rule is ICssPageRule) { var pageRule = (ICssPageRule)rule; SanitizeStyleDeclaration(styleTag, pageRule.Style, baseUrl); } else if (rule is ICssKeyframesRule) { var keyFramesRule = (ICssKeyframesRule)rule; foreach (var childRule in keyFramesRule.Rules.OfType <ICssKeyframeRule>().ToList()) { if (!SanitizeStyleRule(childRule, styleTag, baseUrl) && RemoveAtRule(styleTag, childRule)) { keyFramesRule.Remove(childRule.KeyText); } } } else if (rule is ICssKeyframeRule) { var keyFrameRule = (ICssKeyframeRule)rule; SanitizeStyleDeclaration(styleTag, keyFrameRule.Style, baseUrl); } } return(true); }
public HtmlSanitizer() : base() { AllowedTags.Clear(); AllowedTags.Add("p"); AllowedTags.Add("h2"); AllowedTags.Add("strong"); AllowedTags.Add("em"); AllowedTags.Add("ul"); AllowedTags.Add("ol"); AllowedTags.Add("li"); AllowedTags.Add("a"); AllowedTags.Add("br"); AllowedAttributes.Clear(); AllowedAttributes.Add("href"); AllowedCssProperties.Clear(); AllowedAtRules.Clear(); }
internal Md2HtmlSanitizer() { AllowedTags.Add(@"meta"); AllowedTags.Add(@"style"); AllowedAttributes.Add(@"content"); AllowedAttributes.Add(@"http-equiv"); AllowedAttributes.Add(@"id"); AllowedAttributes.Add(@"class"); AllowedCssProperties.Add(@"src"); AllowedCssProperties.Add(@"word-break"); AllowedCssProperties.Add(@"word-wrap"); AllowedCssProperties.Add(@"-moz-tab-size"); AllowedCssProperties.Add(@"-o-tab-size"); AllowedCssProperties.Add(@"tab-size"); AllowedCssProperties.Add(@"-webkit-hyphens"); AllowedCssProperties.Add(@"-moz-hyphens"); AllowedCssProperties.Add(@"-ms-hyphens"); AllowedCssProperties.Add(@"hyphens"); AllowedCssProperties.Add(@"background-position-x"); AllowedCssProperties.Add(@"background-position-y"); AllowedCssProperties.Add(@"transition-property"); AllowedCssProperties.Add(@"transition-duration"); AllowedCssProperties.Add(@"transition-timing-function"); AllowedCssProperties.Add(@"transition-delay"); AllowedCssProperties.Add(@"box-shadow"); AllowedSchemes.Add(@"file"); AllowedSchemes.Add(@"data"); AllowedAtRules.Add(CssRuleType.Media); AllowedAtRules.Add(CssRuleType.Keyframe); AllowedAtRules.Add(CssRuleType.Keyframes); RemovingAtRule += ChangedEvent; RemovingAttribute += ChangedEvent; RemovingCssClass += ChangedEvent; RemovingStyle += ChangedEvent; RemovingTag += ChangedEvent; }