Browse Source

修复bug

懒得勤快 6 years ago
parent
commit
560941d1e8

+ 27 - 24
Masuit.Tools.Core/Html/HtmlTools.cs

@@ -1,6 +1,5 @@
 using Ganss.XSS;
 using HtmlAgilityPack;
-using Masuit.Tools.Core.Net;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -13,6 +12,27 @@ namespace Masuit.Tools.Html
     /// </summary>
     public static partial class HtmlTools
     {
+        private static readonly HtmlSanitizer Sanitizer = new HtmlSanitizer();
+
+        static HtmlTools()
+        {
+            Sanitizer.AllowedAttributes.Remove("id");
+            Sanitizer.AllowedAttributes.Remove("alt");
+            Sanitizer.AllowedCssProperties.Remove("font-family");
+            Sanitizer.AllowedCssProperties.Remove("background-color");
+            Sanitizer.KeepChildNodes = true;
+            Sanitizer.AllowedTags.Remove("input");
+            Sanitizer.AllowedTags.Remove("button");
+            Sanitizer.AllowedTags.Remove("iframe");
+            Sanitizer.AllowedTags.Remove("frame");
+            Sanitizer.AllowedTags.Remove("textarea");
+            Sanitizer.AllowedTags.Remove("select");
+            Sanitizer.AllowedTags.Remove("form");
+            Sanitizer.AllowedAttributes.Add("src");
+            Sanitizer.AllowedAttributes.Add("class");
+            Sanitizer.AllowedAttributes.Add("style");
+        }
+
         /// <summary>
         /// 标准的防止html的xss净化器
         /// </summary>
@@ -20,23 +40,7 @@ namespace Masuit.Tools.Html
         /// <returns></returns>
         public static string HtmlSantinizerStandard(this string html)
         {
-            var sanitizer = CallContext<HtmlSanitizer>.GetOrAdd("HtmlSanitizer", new HtmlSanitizer());
-            sanitizer.AllowedAttributes.Remove("id");
-            sanitizer.AllowedAttributes.Remove("alt");
-            sanitizer.AllowedCssProperties.Remove("font-family");
-            sanitizer.AllowedCssProperties.Remove("background-color");
-            sanitizer.KeepChildNodes = true;
-            sanitizer.AllowedTags.Remove("input");
-            sanitizer.AllowedTags.Remove("button");
-            sanitizer.AllowedTags.Remove("iframe");
-            sanitizer.AllowedTags.Remove("frame");
-            sanitizer.AllowedTags.Remove("textarea");
-            sanitizer.AllowedTags.Remove("select");
-            sanitizer.AllowedTags.Remove("form");
-            sanitizer.AllowedAttributes.Add("src");
-            sanitizer.AllowedAttributes.Add("class");
-            sanitizer.AllowedAttributes.Add("style");
-            return sanitizer.Sanitize(html);
+            return Sanitizer.Sanitize(html);
         }
 
         /// <summary>
@@ -49,12 +53,11 @@ namespace Masuit.Tools.Html
         /// <returns></returns>
         public static string HtmlSantinizerCustom(this string html, string[] labels = null, string[] attributes = null, string[] styles = null)
         {
-            var sanitizer = CallContext<HtmlSanitizer>.GetOrAdd("HtmlSanitizer", new HtmlSanitizer());
             if (labels != null)
             {
                 foreach (string label in labels)
                 {
-                    sanitizer.AllowedTags.Remove(label);
+                    Sanitizer.AllowedTags.Remove(label);
                 }
             }
 
@@ -62,7 +65,7 @@ namespace Masuit.Tools.Html
             {
                 foreach (string attr in attributes)
                 {
-                    sanitizer.AllowedAttributes.Remove(attr);
+                    Sanitizer.AllowedAttributes.Remove(attr);
                 }
             }
 
@@ -70,12 +73,12 @@ namespace Masuit.Tools.Html
             {
                 foreach (string p in styles)
                 {
-                    sanitizer.AllowedCssProperties.Remove(p);
+                    Sanitizer.AllowedCssProperties.Remove(p);
                 }
             }
 
-            sanitizer.KeepChildNodes = true;
-            return sanitizer.Sanitize(html);
+            Sanitizer.KeepChildNodes = true;
+            return Sanitizer.Sanitize(html);
         }
         /// <summary>
         /// 去除html标签后并截取字符串

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
-    <Version>2.2.7.2</Version>
+    <Version>2.2.7.3</Version>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。

+ 0 - 28
Masuit.Tools.Core/Masuit.Tools.Core.xml

@@ -601,34 +601,6 @@
             <param name="right">右条件</param>
             <returns>新表达式</returns>
         </member>
-        <member name="T:Masuit.Tools.Core.Net.CallContext`1">
-            <summary>
-            取线程内唯一对象
-            </summary>
-            <typeparam name="T"></typeparam>
-        </member>
-        <member name="M:Masuit.Tools.Core.Net.CallContext`1.SetData(System.String,`0)">
-            <summary>
-            设置值
-            </summary>
-            <param name="name"></param>
-            <param name="data"></param>
-        </member>
-        <member name="M:Masuit.Tools.Core.Net.CallContext`1.GetData(System.String)">
-            <summary>
-            获取值
-            </summary>
-            <param name="name"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Masuit.Tools.Core.Net.CallContext`1.GetOrAdd(System.String,`0)">
-            <summary>
-            获取值
-            </summary>
-            <param name="name"></param>
-            <param name="value"></param>
-            <returns></returns>
-        </member>
         <member name="T:Masuit.Tools.Core.Net.HttpContext2">
             <summary>
             实现类似于.NET Framework中的HttpContext静态对象,使用前需要在Startup中注入,ConfigureServices方法中:services.AddStaticHttpContext();,Configure方法中:app.UseStaticHttpContext();

+ 0 - 36
Masuit.Tools.Core/Net/CallContext.cs

@@ -1,36 +0,0 @@
-using System.Collections.Concurrent;
-using System.Threading;
-
-namespace Masuit.Tools.Core.Net
-{
-    /// <summary>
-    /// 取线程内唯一对象
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    public static class CallContext<T>
-    {
-        private static readonly ConcurrentDictionary<string, AsyncLocal<T>> State = new ConcurrentDictionary<string, AsyncLocal<T>>();
-
-        /// <summary>
-        /// 设置值
-        /// </summary>
-        /// <param name="name"></param>
-        /// <param name="data"></param>
-        public static void SetData(string name, T data) => State.GetOrAdd(name, _ => new AsyncLocal<T>()).Value = data;
-
-        /// <summary>
-        /// 获取值
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public static T GetData(string name) => State.TryGetValue(name, out AsyncLocal<T> data) ? data.Value : default(T);
-
-        /// <summary>
-        /// 获取值
-        /// </summary>
-        /// <param name="name"></param>
-        /// <param name="value"></param>
-        /// <returns></returns>
-        public static T GetOrAdd(string name, T value) => State.GetOrAdd(name, new AsyncLocal<T> { Value = value }).Value;
-    }
-}

+ 27 - 21
Masuit.Tools/Html/HtmlTools.cs

@@ -1,6 +1,5 @@
 using Ganss.XSS;
 using HtmlAgilityPack;
-using Masuit.Tools.Net;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -13,6 +12,27 @@ namespace Masuit.Tools.Html
     /// </summary>
     public static partial class HtmlTools
     {
+        private static readonly HtmlSanitizer Sanitizer = new HtmlSanitizer();
+
+        static HtmlTools()
+        {
+            Sanitizer.AllowedAttributes.Remove("id");
+            Sanitizer.AllowedAttributes.Remove("alt");
+            Sanitizer.AllowedCssProperties.Remove("font-family");
+            Sanitizer.AllowedCssProperties.Remove("background-color");
+            Sanitizer.KeepChildNodes = true;
+            Sanitizer.AllowedTags.Remove("input");
+            Sanitizer.AllowedTags.Remove("button");
+            Sanitizer.AllowedTags.Remove("iframe");
+            Sanitizer.AllowedTags.Remove("frame");
+            Sanitizer.AllowedTags.Remove("textarea");
+            Sanitizer.AllowedTags.Remove("select");
+            Sanitizer.AllowedTags.Remove("form");
+            Sanitizer.AllowedAttributes.Add("src");
+            Sanitizer.AllowedAttributes.Add("class");
+            Sanitizer.AllowedAttributes.Add("style");
+        }
+
         /// <summary>
         /// 标准的防止html的xss净化器
         /// </summary>
@@ -20,20 +40,7 @@ namespace Masuit.Tools.Html
         /// <returns></returns>
         public static string HtmlSantinizerStandard(this string html)
         {
-            var sanitizer = CallContext<HtmlSanitizer>.GetOrAdd("HtmlSanitizer", new HtmlSanitizer());
-            sanitizer.AllowedAttributes.Remove("id");
-            sanitizer.AllowedAttributes.Remove("alt");
-            sanitizer.AllowedCssProperties.Remove("font-family");
-            sanitizer.AllowedCssProperties.Remove("background-color");
-            sanitizer.KeepChildNodes = true;
-            sanitizer.AllowedTags.Remove("input");
-            sanitizer.AllowedTags.Remove("button");
-            sanitizer.AllowedTags.Remove("iframe");
-            sanitizer.AllowedTags.Remove("frame");
-            sanitizer.AllowedTags.Remove("textarea");
-            sanitizer.AllowedTags.Remove("select");
-            sanitizer.AllowedTags.Remove("form");
-            return sanitizer.Sanitize(html);
+            return Sanitizer.Sanitize(html);
         }
 
         /// <summary>
@@ -46,12 +53,11 @@ namespace Masuit.Tools.Html
         /// <returns></returns>
         public static string HtmlSantinizerCustom(this string html, string[] labels = null, string[] attributes = null, string[] styles = null)
         {
-            var sanitizer = CallContext<HtmlSanitizer>.GetOrAdd("HtmlSanitizer", new HtmlSanitizer());
             if (labels != null)
             {
                 foreach (string label in labels)
                 {
-                    sanitizer.AllowedTags.Remove(label);
+                    Sanitizer.AllowedTags.Remove(label);
                 }
             }
 
@@ -59,7 +65,7 @@ namespace Masuit.Tools.Html
             {
                 foreach (string attr in attributes)
                 {
-                    sanitizer.AllowedAttributes.Remove(attr);
+                    Sanitizer.AllowedAttributes.Remove(attr);
                 }
             }
 
@@ -67,12 +73,12 @@ namespace Masuit.Tools.Html
             {
                 foreach (string p in styles)
                 {
-                    sanitizer.AllowedCssProperties.Remove(p);
+                    Sanitizer.AllowedCssProperties.Remove(p);
                 }
             }
 
-            sanitizer.KeepChildNodes = true;
-            return sanitizer.Sanitize(html);
+            Sanitizer.KeepChildNodes = true;
+            return Sanitizer.Sanitize(html);
         }
         /// <summary>
         /// 去除html标签后并截取字符串

+ 0 - 1
Masuit.Tools/Masuit.Tools.csproj

@@ -174,7 +174,6 @@
     <Compile Include="Mvc\Mime\MimeMapper.cs" />
     <Compile Include="Mvc\Mime\MimeMappingItem.cs" />
     <Compile Include="Net\CacheHelper.cs" />
-    <Compile Include="Net\CallContext.cs" />
     <Compile Include="Net\CookieHelper.cs" />
     <Compile Include="Net\FtpClient.cs" />
     <Compile Include="Net\MultiThreadDownloader.cs" />

+ 0 - 36
Masuit.Tools/Net/CallContext.cs

@@ -1,36 +0,0 @@
-using System.Collections.Concurrent;
-using System.Threading;
-
-namespace Masuit.Tools.Net
-{
-    /// <summary>
-    /// 取线程内唯一对象
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    internal static class CallContext<T>
-    {
-        private static readonly ConcurrentDictionary<string, AsyncLocal<T>> State = new ConcurrentDictionary<string, AsyncLocal<T>>();
-
-        /// <summary>
-        /// 设置值
-        /// </summary>
-        /// <param name="name"></param>
-        /// <param name="data"></param>
-        public static void SetData(string name, T data) => State.GetOrAdd(name, _ => new AsyncLocal<T>()).Value = data;
-
-        /// <summary>
-        /// 获取值
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public static T GetData(string name) => State.TryGetValue(name, out AsyncLocal<T> data) ? data.Value : default(T);
-
-        /// <summary>
-        /// 获取值
-        /// </summary>
-        /// <param name="name"></param>
-        /// <param name="value"></param>
-        /// <returns></returns>
-        public static T GetOrAdd(string name, T value) => State.GetOrAdd(name, new AsyncLocal<T> { Value = value }).Value;
-    }
-}

BIN
Masuit.Tools/Properties/AssemblyInfo.cs


+ 1 - 1
Masuit.Tools/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools</id>
     <!--*-->
-    <version>2.2.7.2</version>
+    <version>2.2.7.3</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>masuit.com</authors>