Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
finance-oa
finance-manage
Commits
6b5dd4d2
Commit
6b5dd4d2
authored
Jul 28, 2021
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化XSS跨站脚本过滤
parent
e6becb93
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
49 additions
and
34 deletions
+49
-34
ruoyi-admin/src/main/resources/application.yml
ruoyi-admin/src/main/resources/application.yml
+1
-1
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
...ain/java/com/ruoyi/common/core/domain/entity/SysUser.java
+1
-1
ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
...mmon/src/main/java/com/ruoyi/common/filter/XssFilter.java
+5
-28
ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
...mon/src/main/java/com/ruoyi/common/utils/StringUtils.java
+40
-0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
...rc/main/java/com/ruoyi/framework/config/FilterConfig.java
+2
-4
No files found.
ruoyi-admin/src/main/resources/application.yml
View file @
6b5dd4d2
...
...
@@ -115,6 +115,6 @@ xss:
# 过滤开关
enabled
:
true
# 排除链接(多个用逗号分隔)
excludes
:
/system/notice
/*
excludes
:
/system/notice
# 匹配链接
urlPatterns
:
/system/*,/monitor/*,/tool/*
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
View file @
6b5dd4d2
ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
View file @
6b5dd4d2
...
...
@@ -3,8 +3,6 @@ package com.ruoyi.common.filter;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
javax.servlet.Filter
;
import
javax.servlet.FilterChain
;
import
javax.servlet.FilterConfig
;
...
...
@@ -27,16 +25,10 @@ public class XssFilter implements Filter
*/
public
List
<
String
>
excludes
=
new
ArrayList
<>();
/**
* xss过滤开关
*/
public
boolean
enabled
=
false
;
@Override
public
void
init
(
FilterConfig
filterConfig
)
throws
ServletException
{
String
tempExcludes
=
filterConfig
.
getInitParameter
(
"excludes"
);
String
tempEnabled
=
filterConfig
.
getInitParameter
(
"enabled"
);
if
(
StringUtils
.
isNotEmpty
(
tempExcludes
))
{
String
[]
url
=
tempExcludes
.
split
(
","
);
...
...
@@ -45,10 +37,6 @@ public class XssFilter implements Filter
excludes
.
add
(
url
[
i
]);
}
}
if
(
StringUtils
.
isNotEmpty
(
tempEnabled
))
{
enabled
=
Boolean
.
valueOf
(
tempEnabled
);
}
}
@Override
...
...
@@ -68,25 +56,14 @@ public class XssFilter implements Filter
private
boolean
handleExcludeURL
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
if
(!
enabled
)
{
return
true
;
}
if
(
excludes
==
null
||
excludes
.
isEmpty
())
{
return
false
;
}
String
url
=
request
.
getServletPath
();
for
(
String
pattern
:
excludes
)
{
Pattern
p
=
Pattern
.
compile
(
"^"
+
pattern
);
Matcher
m
=
p
.
matcher
(
url
);
if
(
m
.
find
())
String
method
=
request
.
getMethod
();
// GET DELETE 不过滤
if
(
method
==
null
||
method
.
matches
(
"GET"
)
||
method
.
matches
(
"DELETE"
))
{
return
true
;
}
}
return
false
;
return
StringUtils
.
matches
(
url
,
excludes
);
}
@Override
...
...
ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
View file @
6b5dd4d2
...
...
@@ -6,6 +6,7 @@ import java.util.HashSet;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
org.springframework.util.AntPathMatcher
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.core.text.StrFormatter
;
...
...
@@ -463,6 +464,45 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
return
sb
.
toString
();
}
/**
* 查找指定字符串是否匹配指定字符串列表中的任意一个字符串
*
* @param str 指定字符串
* @param strs 需要检查的字符串数组
* @return 是否匹配
*/
public
static
boolean
matches
(
String
str
,
List
<
String
>
strs
)
{
if
(
isEmpty
(
str
)
||
isEmpty
(
strs
))
{
return
false
;
}
for
(
String
pattern
:
strs
)
{
if
(
isMatch
(
pattern
,
str
))
{
return
true
;
}
}
return
false
;
}
/**
* 判断url是否与规则配置:
* ? 表示单个字符;
* * 表示一层路径内的任意字符串,不可跨层级;
* ** 表示任意层路径;
*
* @param pattern 匹配规则
* @param url 需要匹配的url
* @return
*/
public
static
boolean
isMatch
(
String
pattern
,
String
url
)
{
AntPathMatcher
matcher
=
new
AntPathMatcher
();
return
matcher
.
match
(
pattern
,
url
);
}
@SuppressWarnings
(
"unchecked"
)
public
static
<
T
>
T
cast
(
Object
obj
)
{
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
View file @
6b5dd4d2
...
...
@@ -4,6 +4,7 @@ import java.util.HashMap;
import
java.util.Map
;
import
javax.servlet.DispatcherType
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -17,11 +18,9 @@ import com.ruoyi.common.utils.StringUtils;
* @author ruoyi
*/
@Configuration
@ConditionalOnProperty
(
value
=
"xss.enabled"
,
havingValue
=
"true"
)
public
class
FilterConfig
{
@Value
(
"${xss.enabled}"
)
private
String
enabled
;
@Value
(
"${xss.excludes}"
)
private
String
excludes
;
...
...
@@ -40,7 +39,6 @@ public class FilterConfig
registration
.
setOrder
(
FilterRegistrationBean
.
HIGHEST_PRECEDENCE
);
Map
<
String
,
String
>
initParameters
=
new
HashMap
<
String
,
String
>();
initParameters
.
put
(
"excludes"
,
excludes
);
initParameters
.
put
(
"enabled"
,
enabled
);
registration
.
setInitParameters
(
initParameters
);
return
registration
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment