From 0bf0d6b840b95627823cc75c306f4f266d1432e3 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Thu, 26 Nov 2020 11:56:32 +0800 Subject: [PATCH] =?UTF-8?q?[WAF]=E5=A2=9E=E5=8A=A0=E8=8B=A5=E5=B9=B2?= =?UTF-8?q?=E4=B8=AA=E7=BC=96=E8=A7=A3=E7=A0=81=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filterconfigs/filter_html_escape.go | 20 +++++++++++++ .../filterconfigs/filter_html_escape_test.go | 9 ++++++ .../filterconfigs/filter_html_unescape.go | 20 +++++++++++++ .../filter_html_unescape_test.go | 10 +++++++ .../filterconfigs/filter_unicode_decode.go | 25 ++++++++++++++++ .../filter_unicode_decode_test.go | 10 +++++++ .../filterconfigs/filter_unicode_encode.go | 29 +++++++++++++++++++ .../filter_unicode_encode_test.go | 11 +++++++ pkg/serverconfigs/filterconfigs/filters.go | 24 ++++++++------- 9 files changed, 148 insertions(+), 10 deletions(-) create mode 100644 pkg/serverconfigs/filterconfigs/filter_html_escape.go create mode 100644 pkg/serverconfigs/filterconfigs/filter_html_escape_test.go create mode 100644 pkg/serverconfigs/filterconfigs/filter_html_unescape.go create mode 100644 pkg/serverconfigs/filterconfigs/filter_html_unescape_test.go create mode 100644 pkg/serverconfigs/filterconfigs/filter_unicode_decode.go create mode 100644 pkg/serverconfigs/filterconfigs/filter_unicode_decode_test.go create mode 100644 pkg/serverconfigs/filterconfigs/filter_unicode_encode.go create mode 100644 pkg/serverconfigs/filterconfigs/filter_unicode_encode_test.go diff --git a/pkg/serverconfigs/filterconfigs/filter_html_escape.go b/pkg/serverconfigs/filterconfigs/filter_html_escape.go new file mode 100644 index 0000000..c6f11c3 --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_html_escape.go @@ -0,0 +1,20 @@ +package filterconfigs + +import ( + "github.com/iwind/TeaGo/types" + "html" +) + +type HTMLEscapeFilter struct { +} + +// 初始化 +func (this *HTMLEscapeFilter) Init() error { + return nil +} + +// 执行过滤 +func (this *HTMLEscapeFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) { + s := types.String(input) + return html.EscapeString(s), true, nil +} diff --git a/pkg/serverconfigs/filterconfigs/filter_html_escape_test.go b/pkg/serverconfigs/filterconfigs/filter_html_escape_test.go new file mode 100644 index 0000000..4a59111 --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_html_escape_test.go @@ -0,0 +1,9 @@ +package filterconfigs + +import "testing" + +func TestHTMLEscapeFilter_Do(t *testing.T) { + filter := &HTMLEscapeFilter{} + t.Log(filter.Do("Hello", nil)) + t.Log(filter.Do("", nil)) +} diff --git a/pkg/serverconfigs/filterconfigs/filter_html_unescape.go b/pkg/serverconfigs/filterconfigs/filter_html_unescape.go new file mode 100644 index 0000000..15bd19e --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_html_unescape.go @@ -0,0 +1,20 @@ +package filterconfigs + +import ( + "github.com/iwind/TeaGo/types" + "html" +) + +type HTMLUnescapeFilter struct { +} + +// 初始化 +func (this *HTMLUnescapeFilter) Init() error { + return nil +} + +// 执行过滤 +func (this *HTMLUnescapeFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) { + s := types.String(input) + return html.UnescapeString(s), true, nil +} diff --git a/pkg/serverconfigs/filterconfigs/filter_html_unescape_test.go b/pkg/serverconfigs/filterconfigs/filter_html_unescape_test.go new file mode 100644 index 0000000..e0d2da4 --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_html_unescape_test.go @@ -0,0 +1,10 @@ +package filterconfigs + +import "testing" + +func TestHTMLUnescapeFilter_Do(t *testing.T) { + filter := &HTMLUnescapeFilter{} + t.Log(filter.Do("Hello", nil)) + t.Log(filter.Do("<script>", nil)) + t.Log(filter.Do("