Browse Source

HTML-encode TagHelper titles and texts for security

pull/24488/head
maliming 9 months ago
parent
commit
61405d30cf
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs
  2. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs
  3. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs
  4. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelperService.cs
  5. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs
  6. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs
  7. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs
  8. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs
  9. 9
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs
  10. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs
  11. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs
  12. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs
  13. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs
  14. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs

@ -46,7 +46,7 @@ public class AbpBreadcrumbItemTagHelperService : AbpTagHelperService<AbpBreadcru
var link = new TagBuilder("a"); var link = new TagBuilder("a");
link.Attributes.Add("href", TagHelper.Href); link.Attributes.Add("href", TagHelper.Href);
link.InnerHtml.AppendHtml(TagHelper.Title); link.InnerHtml.AppendHtml(_encoder.Encode(TagHelper.Title));
return link.ToHtmlString(); return link.ToHtmlString();
} }
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs

@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using System; using System;
using System.Text.Encodings.Web;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button;
@ -12,7 +13,8 @@ public class AbpButtonTagHelperService : AbpButtonTagHelperServiceBase<AbpButton
protected IStringLocalizer<AbpUiResource> L { get; } protected IStringLocalizer<AbpUiResource> L { get; }
public AbpButtonTagHelperService(IStringLocalizer<AbpUiResource> localizer) public AbpButtonTagHelperService(HtmlEncoder encoder, IStringLocalizer<AbpUiResource> localizer)
: base(encoder)
{ {
L = localizer; L = localizer;
} }

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs

@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using System; using System;
using System.Text.Encodings.Web;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button;
@ -8,6 +9,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button;
public abstract class AbpButtonTagHelperServiceBase<TTagHelper> : AbpTagHelperService<TTagHelper> public abstract class AbpButtonTagHelperServiceBase<TTagHelper> : AbpTagHelperService<TTagHelper>
where TTagHelper : TagHelper, IButtonTagHelperBase where TTagHelper : TagHelper, IButtonTagHelperBase
{ {
protected HtmlEncoder Encoder { get; }
protected AbpButtonTagHelperServiceBase(HtmlEncoder encoder)
{
Encoder = encoder;
}
public override void Process(TagHelperContext context, TagHelperOutput output) public override void Process(TagHelperContext context, TagHelperOutput output)
{ {
NormalizeTagMode(context, output); NormalizeTagMode(context, output);
@ -69,7 +77,7 @@ public abstract class AbpButtonTagHelperServiceBase<TTagHelper> : AbpTagHelperSe
} }
var span = new TagBuilder("span"); var span = new TagBuilder("span");
span.InnerHtml.AppendHtml(TagHelper.Text!); span.InnerHtml.AppendHtml(Encoder.Encode(TagHelper.Text!));
output.Content.AppendHtml(span); output.Content.AppendHtml(span);
} }

7
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelperService.cs

@ -1,10 +1,17 @@
using System; using System;
using System.Text.Encodings.Web;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button;
public class AbpLinkButtonTagHelperService : AbpButtonTagHelperServiceBase<AbpLinkButtonTagHelper> public class AbpLinkButtonTagHelperService : AbpButtonTagHelperServiceBase<AbpLinkButtonTagHelper>
{ {
public AbpLinkButtonTagHelperService(HtmlEncoder encoder)
: base(encoder)
{
}
public override void Process(TagHelperContext context, TagHelperOutput output) public override void Process(TagHelperContext context, TagHelperOutput output)
{ {
base.Process(context, output); base.Process(context, output);

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs

@ -1,4 +1,5 @@
using System; using System;
using System.Text.Encodings.Web;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers;
@ -7,6 +8,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card;
public class AbpCardBodyTagHelperService : AbpTagHelperService<AbpCardBodyTagHelper> public class AbpCardBodyTagHelperService : AbpTagHelperService<AbpCardBodyTagHelper>
{ {
protected HtmlEncoder Encoder { get; }
public AbpCardBodyTagHelperService(HtmlEncoder encoder)
{
Encoder = encoder;
}
public override void Process(TagHelperContext context, TagHelperOutput output) public override void Process(TagHelperContext context, TagHelperOutput output)
{ {
output.TagName = "div"; output.TagName = "div";
@ -22,7 +30,7 @@ public class AbpCardBodyTagHelperService : AbpTagHelperService<AbpCardBodyTagHel
{ {
var cardTitle = new TagBuilder(AbpCardTitleTagHelper.DefaultHeading.ToHtmlTag()); var cardTitle = new TagBuilder(AbpCardTitleTagHelper.DefaultHeading.ToHtmlTag());
cardTitle.AddCssClass("card-title"); cardTitle.AddCssClass("card-title");
cardTitle.InnerHtml.AppendHtml(TagHelper.Title!); cardTitle.InnerHtml.AppendHtml(Encoder.Encode(TagHelper.Title!));
output.PreContent.AppendHtml(cardTitle); output.PreContent.AppendHtml(cardTitle);
} }
} }
@ -33,7 +41,7 @@ public class AbpCardBodyTagHelperService : AbpTagHelperService<AbpCardBodyTagHel
{ {
var cardSubtitle = new TagBuilder(AbpCardSubtitleTagHelper.DefaultHeading.ToHtmlTag()); var cardSubtitle = new TagBuilder(AbpCardSubtitleTagHelper.DefaultHeading.ToHtmlTag());
cardSubtitle.AddCssClass("card-subtitle mb-2"); cardSubtitle.AddCssClass("card-subtitle mb-2");
cardSubtitle.InnerHtml.AppendHtml(TagHelper.Subtitle!); cardSubtitle.InnerHtml.AppendHtml(Encoder.Encode(TagHelper.Subtitle!));
output.PreContent.AppendHtml(cardSubtitle); output.PreContent.AppendHtml(cardSubtitle);
} }
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs

@ -66,10 +66,10 @@ public class AbpCarouselItemTagHelperService : AbpTagHelperService<AbpCarouselIt
} }
var title = new TagBuilder("h5"); var title = new TagBuilder("h5");
title.InnerHtml.AppendHtml(TagHelper.CaptionTitle!); title.InnerHtml.AppendHtml(_encoder.Encode(TagHelper.CaptionTitle!));
var caption = new TagBuilder("p"); var caption = new TagBuilder("p");
caption.InnerHtml.AppendHtml(TagHelper.Caption!); caption.InnerHtml.AppendHtml(_encoder.Encode(TagHelper.Caption!));
var wrapper = new TagBuilder("div"); var wrapper = new TagBuilder("div");
wrapper.AddCssClass("carousel-caption d-none d-md-block"); wrapper.AddCssClass("carousel-caption d-none d-md-block");

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs

@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
@ -9,6 +10,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse;
public class AbpAccordionItemTagHelperService : AbpTagHelperService<AbpAccordionItemTagHelper> public class AbpAccordionItemTagHelperService : AbpTagHelperService<AbpAccordionItemTagHelper>
{ {
protected HtmlEncoder Encoder { get; }
public AbpAccordionItemTagHelperService(HtmlEncoder encoder)
{
Encoder = encoder;
}
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{ {
SetRandomIdIfNotProvided(); SetRandomIdIfNotProvided();
@ -32,7 +40,7 @@ public class AbpAccordionItemTagHelperService : AbpTagHelperService<AbpAccordion
button.Attributes.Add("data-bs-target", "#" + GetContentId()); button.Attributes.Add("data-bs-target", "#" + GetContentId());
button.Attributes.Add("aria-expanded", "true"); button.Attributes.Add("aria-expanded", "true");
button.Attributes.Add("aria-controls", GetContentId()); button.Attributes.Add("aria-controls", GetContentId());
button.InnerHtml.AppendHtml(TagHelper.Title); button.InnerHtml.AppendHtml(Encoder.Encode(TagHelper.Title));
var h5 = new TagBuilder("h5"); var h5 = new TagBuilder("h5");
h5.AddCssClass("mb-0"); h5.AddCssClass("mb-0");

7
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs

@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
@ -14,10 +15,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
public class AbpRadioInputTagHelperService : AbpTagHelperService<AbpRadioInputTagHelper> public class AbpRadioInputTagHelperService : AbpTagHelperService<AbpRadioInputTagHelper>
{ {
private readonly IAbpTagHelperLocalizer _tagHelperLocalizer; private readonly IAbpTagHelperLocalizer _tagHelperLocalizer;
private readonly HtmlEncoder _htmlEncoder ;
public AbpRadioInputTagHelperService(IAbpTagHelperLocalizer tagHelperLocalizer) public AbpRadioInputTagHelperService(IAbpTagHelperLocalizer tagHelperLocalizer, HtmlEncoder htmlEncoder)
{ {
_tagHelperLocalizer = tagHelperLocalizer; _tagHelperLocalizer = tagHelperLocalizer;
_htmlEncoder = htmlEncoder;
} }
public override void Process(TagHelperContext context, TagHelperOutput output) public override void Process(TagHelperContext context, TagHelperOutput output)
@ -74,7 +77,7 @@ public class AbpRadioInputTagHelperService : AbpTagHelperService<AbpRadioInputTa
var label = new TagBuilder("label"); var label = new TagBuilder("label");
label.AddCssClass("form-check-label"); label.AddCssClass("form-check-label");
label.Attributes.Add("for", id); label.Attributes.Add("for", id);
label.InnerHtml.AppendHtml(selectItem.Text); label.InnerHtml.AppendHtml(_htmlEncoder.Encode(selectItem.Text));
var wrapper = new TagBuilder("div"); var wrapper = new TagBuilder("div");
wrapper.AddCssClass("form-check" + inlineClass); wrapper.AddCssClass("form-check" + inlineClass);

9
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs

@ -1,4 +1,5 @@
using Localization.Resources.AbpUi; using System.Text.Encodings.Web;
using Localization.Resources.AbpUi;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
@ -9,10 +10,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal;
public class AbpModalHeaderTagHelperService : AbpTagHelperService<AbpModalHeaderTagHelper> public class AbpModalHeaderTagHelperService : AbpTagHelperService<AbpModalHeaderTagHelper>
{ {
protected IStringLocalizer<AbpUiResource> L { get; } protected IStringLocalizer<AbpUiResource> L { get; }
protected HtmlEncoder Encoder { get; }
public AbpModalHeaderTagHelperService(IStringLocalizer<AbpUiResource> localizer) public AbpModalHeaderTagHelperService(IStringLocalizer<AbpUiResource> localizer, HtmlEncoder encoder)
{ {
L = localizer; L = localizer;
Encoder = encoder;
} }
public override void Process(TagHelperContext context, TagHelperOutput output) public override void Process(TagHelperContext context, TagHelperOutput output)
@ -27,7 +30,7 @@ public class AbpModalHeaderTagHelperService : AbpTagHelperService<AbpModalHeader
{ {
var title = new TagBuilder("h5"); var title = new TagBuilder("h5");
title.AddCssClass("modal-title"); title.AddCssClass("modal-title");
title.InnerHtml.AppendHtml(TagHelper.Title); title.InnerHtml.AppendHtml(Encoder.Encode(TagHelper.Title));
return title.ToHtmlString(); return title.ToHtmlString();
} }

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs

@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
@ -9,6 +10,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab;
public class AbpTabDropdownTagHelperService : AbpTagHelperService<AbpTabDropdownTagHelper> public class AbpTabDropdownTagHelperService : AbpTagHelperService<AbpTabDropdownTagHelper>
{ {
protected HtmlEncoder Encoder { get; }
public AbpTabDropdownTagHelperService(HtmlEncoder encoder)
{
Encoder = encoder;
}
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{ {
if (string.IsNullOrWhiteSpace(TagHelper.Name)) if (string.IsNullOrWhiteSpace(TagHelper.Name))
@ -40,7 +48,7 @@ public class AbpTabDropdownTagHelperService : AbpTagHelperService<AbpTabDropdown
anchor.Attributes.Add("role", "button"); anchor.Attributes.Add("role", "button");
anchor.Attributes.Add("aria-haspopup", "true"); anchor.Attributes.Add("aria-haspopup", "true");
anchor.Attributes.Add("aria-expanded", "false"); anchor.Attributes.Add("aria-expanded", "false");
anchor.InnerHtml.AppendHtml(title); anchor.InnerHtml.AppendHtml(Encoder.Encode(title));
var menu = new TagBuilder("div"); var menu = new TagBuilder("div");
menu.AddCssClass("dropdown-menu"); menu.AddCssClass("dropdown-menu");

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs

@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
@ -8,6 +9,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab;
public class AbpTabLinkTagHelperService : AbpTagHelperService<AbpTabLinkTagHelper> public class AbpTabLinkTagHelperService : AbpTagHelperService<AbpTabLinkTagHelper>
{ {
protected HtmlEncoder Encoder { get; }
public AbpTabLinkTagHelperService(HtmlEncoder encoder)
{
Encoder = encoder;
}
public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{ {
SetPlaceholderForNameIfNotProvided(); SetPlaceholderForNameIfNotProvided();
@ -35,7 +43,7 @@ public class AbpTabLinkTagHelperService : AbpTagHelperService<AbpTabLinkTagHelpe
anchor.AddCssClass("dropdown-item"); anchor.AddCssClass("dropdown-item");
anchor.Attributes.Add("id", id); anchor.Attributes.Add("id", id);
anchor.Attributes.Add("href", href); anchor.Attributes.Add("href", href);
anchor.InnerHtml.AppendHtml(title); anchor.InnerHtml.AppendHtml(Encoder.Encode(title));
return anchor.ToHtmlString(); return anchor.ToHtmlString();
} }
@ -45,7 +53,7 @@ public class AbpTabLinkTagHelperService : AbpTagHelperService<AbpTabLinkTagHelpe
anchor.AddCssClass("nav-link " + AbpTabItemActivePlaceholder); anchor.AddCssClass("nav-link " + AbpTabItemActivePlaceholder);
anchor.Attributes.Add("id", id); anchor.Attributes.Add("id", id);
anchor.Attributes.Add("href", href); anchor.Attributes.Add("href", href);
anchor.InnerHtml.AppendHtml(title); anchor.InnerHtml.AppendHtml(Encoder.Encode(title));
var listItem = new TagBuilder("li"); var listItem = new TagBuilder("li");
listItem.AddCssClass("nav-item"); listItem.AddCssClass("nav-item");

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs

@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
@ -9,6 +10,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab;
public class AbpTabTagHelperService : AbpTagHelperService<AbpTabTagHelper> public class AbpTabTagHelperService : AbpTagHelperService<AbpTabTagHelper>
{ {
protected HtmlEncoder Encoder { get; }
public AbpTabTagHelperService(HtmlEncoder encoder)
{
Encoder = encoder;
}
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{ {
SetPlaceholderForNameIfNotProvided(); SetPlaceholderForNameIfNotProvided();
@ -53,7 +61,7 @@ public class AbpTabTagHelperService : AbpTagHelperService<AbpTabTagHelper>
anchor.Attributes.Add(attr.Name, attr.Value.ToString()); anchor.Attributes.Add(attr.Name, attr.Value.ToString());
} }
anchor.InnerHtml.AppendHtml(title); anchor.InnerHtml.AppendHtml(Encoder.Encode(title));
return anchor.ToHtmlString(); return anchor.ToHtmlString();
} }
@ -73,7 +81,7 @@ public class AbpTabTagHelperService : AbpTagHelperService<AbpTabTagHelper>
anchor.Attributes.Add(attr.Name, attr.Value.ToString()); anchor.Attributes.Add(attr.Name, attr.Value.ToString());
} }
anchor.InnerHtml.AppendHtml(title); anchor.InnerHtml.AppendHtml(Encoder.Encode(title));
var listItem = new TagBuilder("li"); var listItem = new TagBuilder("li");
listItem.AddCssClass("nav-item"); listItem.AddCssClass("nav-item");

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
@ -18,10 +19,9 @@ public class AbpTagHelperScriptService : AbpTagHelperResourceService
public AbpTagHelperScriptService( public AbpTagHelperScriptService(
IBundleManager bundleManager, IBundleManager bundleManager,
IOptions<AbpBundlingOptions> options, IOptions<AbpBundlingOptions> options,
IWebHostEnvironment hostingEnvironment) : base( IWebHostEnvironment hostingEnvironment,
bundleManager, HtmlEncoder encoder)
options, : base(bundleManager, options, hostingEnvironment, encoder)
hostingEnvironment)
{ {
} }

7
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
@ -21,10 +22,12 @@ public class AbpTagHelperStyleService : AbpTagHelperResourceService
IBundleManager bundleManager, IBundleManager bundleManager,
IOptions<AbpBundlingOptions> options, IOptions<AbpBundlingOptions> options,
IWebHostEnvironment hostingEnvironment, IWebHostEnvironment hostingEnvironment,
IOptions<AbpSecurityHeadersOptions> securityHeadersOptions) : base( IOptions<AbpSecurityHeadersOptions> securityHeadersOptions,
HtmlEncoder encoder) : base(
bundleManager, bundleManager,
options, options,
hostingEnvironment) hostingEnvironment,
encoder)
{ {
SecurityHeadersOptions = securityHeadersOptions.Value; SecurityHeadersOptions = securityHeadersOptions.Value;
} }

Loading…
Cancel
Save