Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
szpt
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
以墨为白
szpt
Commits
148b3928
Commit
148b3928
authored
Jan 09, 2025
by
以墨为白
🎧
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
判断nonce和时间戳有效
parent
ded60957
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
1 deletion
+52
-1
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter.java
...ava/com/zksy/szpt/filter/SignatureVerificationFilter.java
+11
-0
src/main/java/com/zksy/szpt/util/RedisKeyValidator.java
src/main/java/com/zksy/szpt/util/RedisKeyValidator.java
+40
-0
src/test/java/com/zksy/szpt/MainTest.java
src/test/java/com/zksy/szpt/MainTest.java
+1
-1
No files found.
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter.java
View file @
148b3928
...
...
@@ -11,6 +11,7 @@ import com.zksy.szpt.domain.HttpResultState;
import
com.zksy.szpt.domain.po.AppStore
;
import
com.zksy.szpt.service.AppStoreService
;
import
com.zksy.szpt.util.EncryptUtil
;
import
com.zksy.szpt.util.RedisKeyValidator
;
import
com.zksy.szpt.util.SignatureUtil
;
import
com.zksy.szpt.util.UserContextHolder
;
import
org.slf4j.Logger
;
...
...
@@ -83,6 +84,16 @@ public class SignatureVerificationFilter extends OncePerRequestFilter {
return
false
;
}
// 验证nonce和timestamp合法性
if
(!
RedisKeyValidator
.
isValidString
(
nonce
))
{
this
.
write
(
response
,
"不是合法的由数字和字母以及下划线组成的nonce:"
+
nonce
);
return
false
;
}
if
(!
RedisKeyValidator
.
isValidTimestamp
(
timestampStr
))
{
this
.
write
(
response
,
"不是合法的十位秒级时间戳timestamp:"
+
timestampStr
);
return
false
;
}
// timestamp 10分钟内有效
long
timestamp
=
Long
.
parseLong
(
timestampStr
);
long
currentTimestamp
=
System
.
currentTimeMillis
()
/
1000
;
...
...
src/main/java/com/zksy/szpt/util/RedisKeyValidator.java
0 → 100644
View file @
148b3928
package
com
.
zksy
.
szpt
.
util
;
import
java.util.regex.Pattern
;
public
class
RedisKeyValidator
{
private
static
final
String
INVALID_CHARACTERS
=
"[\\x00\\x20\\x0A\\x0D\\x09]"
;
// 常见的无效字符
public
static
boolean
isValidKey
(
String
key
)
{
if
(
key
==
null
||
key
.
isEmpty
())
{
return
false
;
}
return
!
key
.
matches
(
INVALID_CHARACTERS
);
}
/**
*
* @param str
* @return
*/
public
static
boolean
isValidString
(
String
str
)
{
// 定义正则表达式,匹配字母、数字和下划线
String
regex
=
"\\w+"
;
return
Pattern
.
matches
(
regex
,
str
);
}
/**
* 检查是否为有效的秒级时间戳
* @param timestamp
* @return
*/
public
static
boolean
isValidTimestamp
(
String
timestamp
)
{
// 检查是否为数字
if
(!
timestamp
.
matches
(
"\\d+"
))
{
return
false
;
}
// 检查长度是否为10位(秒)
return
timestamp
.
length
()
==
10
;
}
}
src/test/java/com/zksy/szpt/MainTest.java
View file @
148b3928
...
...
@@ -29,7 +29,7 @@ public class MainTest {
String
nonce
=
"2"
;
String
timestampStr
=
"21"
;
String
appId
=
"1872576325743943682"
;
String
appSecret
=
"2
1
"
;
String
appSecret
=
"2"
;
@Resource
...
...
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