Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f1cb0aa

Browse files
committed
对标题更严格的敏感词过滤
1 parent d71e8a4 commit f1cb0aa

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

websites/code/studygolang/src/filter/sensitive.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ type SensitiveFilter struct {
2323
*mux.EmptyFilter
2424
}
2525

26+
var titleSensitives = []string{"发票"}
27+
2628
// PreFilter 执行 handler 之前的过滤方法
2729
func (this *SensitiveFilter) PreFilter(rw http.ResponseWriter, req *http.Request) bool {
2830
logger.Debugln("SensitiveFilter PreFilter...")
@@ -33,10 +35,22 @@ func (this *SensitiveFilter) PreFilter(rw http.ResponseWriter, req *http.Request
3335
return true
3436
}
3537

38+
curUser, _ := CurrentUser(req)
39+
40+
// 标题特殊处理
41+
for _, s := range titleSensitives {
42+
if util.HasSensitiveChar(title, s) {
43+
// 把账号冻结
44+
service.UpdateUserStatus(curUser["uid"].(int), model.StatusFreeze)
45+
46+
logger.Infoln("user=", curUser["uid"], "publish ad, title=", title, ";content=", content, ". freeze")
47+
return false
48+
}
49+
}
50+
3651
sensitive := config.Config["sensitive"]
3752
if util.HasSensitive(title, sensitive) || util.HasSensitive(content, sensitive) {
3853
// 把账号冻结
39-
curUser, _ := CurrentUser(req)
4054
service.UpdateUserStatus(curUser["uid"].(int), model.StatusFreeze)
4155

4256
logger.Infoln("user=", curUser["uid"], "publish ad, title=", title, ";content=", content, ". freeze")

websites/code/studygolang/src/util/sensitive.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ import (
1111
)
1212

1313
// HasSensitive 是否有敏感词
14-
func HasSensitive(content string, sensitive string) bool {
14+
func HasSensitive(content, sensitive string) bool {
15+
if content == "" {
16+
return false
17+
}
18+
1519
sensitives := strings.Split(sensitive, ",")
1620

1721
for _, s := range sensitives {
@@ -22,3 +26,20 @@ func HasSensitive(content string, sensitive string) bool {
2226

2327
return false
2428
}
29+
30+
// HasSensitiveChar 是否包含敏感字(多个词都包含)
31+
func HasSensitiveChar(title, sensitive string) bool {
32+
if title == "" || sensitive == "" {
33+
return false
34+
}
35+
36+
sensitives := strings.Split(sensitive, "")
37+
38+
for _, s := range sensitives {
39+
if !strings.Contains(title, s) {
40+
return false
41+
}
42+
}
43+
44+
return true
45+
}

0 commit comments

Comments
 (0)