go实现waf web防火墙代理请求示例代码
代码语言:golang
所属分类:其他
代码描述:go实现waf web防火墙代理请求示例代码,可以限流、过滤危险请求与响应,非正常请求等过滤,基于反向代理实现。
代码标签: go waf web 防火墙 代理 请求 示例 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
// main.go
package main
import (
"fmt"
"log"
"net"
"net/http"
"net/http/httputil"
"net/url"
"regexp"
"strings"
"sync"
"time"
)
const (
// 后端 Nginx 地址
backendAddr = "http://127.0.0.1:8081"
// 每 IP 每分钟最大请求数
rateLimit = 20
)
// 全局限流计数器(生产环境建议用 Redis)
var (
ipCounter = make(map[string]int64)
counterMu = sync.RWMutex{}
)
func init() {
// 每分钟清空计数器(简化版)
go func() {
for {
time.Sleep(1 * time.Minute)
counterMu.Lock()
ipCounter = make(map[string]int64)
counterMu.Unlock()
}
}()
}
// 获取客户端真实 IP(支持 X-Forwarded-For)
func getClientIP(r *http.Request) string {
if xff := r.Header.Get("X-Forwarded-For"); xff != "" {
return strings.Split(xff, ",")[0]
}
if r.........完整代码请登录后点击上方下载按钮下载查看















网友评论0