您的位置:首页 > 科技 > 能源 > 请求头beego设置

请求头beego设置

2024/10/6 1:41:37 来源:https://blog.csdn.net/yang20000222/article/details/141457139  浏览:    关键词:请求头beego设置

app.conf

  • 请求头
[addheaders]
# security_headers
x-xss-protection = "1; mode=block"
x-frame-options = "DENY"
x-content-type-options = "nosniff"
strict-transport-security = "max-age=315360000"
referrer-policy = "same-origin"
Content-Security-Policy = "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval';img-src 'self' data:"
X-XSS-Protection: 这是IE、Safari、Chrome等浏览器提供的一个功能,用于控制浏览器是否启用其内置的跨站脚本(XSS)过滤器。当设置为 1; mode=block时,表示启用XSS过滤器,并且如果检测到跨站脚本攻击,浏览器会阻止页面加载。X-Frame-Options: 此头部用于指示浏览器是否应该加载页面中的<iframe>或<frame>元素。DENY选项告诉浏览器不要在任何被 <frame>、<iframe>、<embed>或<applet>标签内显示页面内容。这可以防止点击劫持攻击,其中攻击者通过诱导用户点击看起来无辜的链接但实际上是一个被覆盖的页面上的按钮或链接。X-Content-Type-Options: 此头部主要用于指示浏览器忽略文件的MIME类型检测,以防止内容类型嗅探攻击。nosniff选项告诉浏览器不要尝试嗅探资源的实际类型,而是严格使用服务器提供的Content-Type。Strict-Transport-Security: 通过指定此头部,服务器可以指示浏览器仅通过HTTPS来访问当前域的资源,而不是HTTP。max-age=315360000表示在指定的秒数内,浏览器会记住这个域只接受HTTPS连接。Referrer-Policy: 这个头部控制着从当前页面发起的请求如何携带HTTP的Referer头部。same-origin选项意味着只有当请求的资源与原始页面同源时,才会发送Referer头部。Content-Security-Policy: 这是一个强大的保护措施,用于指定哪些资源可以从哪些来源加载。default-src 'self'意味着默认情况下只允许从同一源加载资源;script-src 'self' 'unsafe-inline'表示允许从同一源加载脚本,并且允许使用内联脚本(这通常不推荐,因为它可能会带来安全风险)。

IP限制

header

// 正则匹配,模拟通配符效果
var RegexWildcard =func(ip string,clientIP string)(bool){regex := "^"+ip+"$"match, _ := regexp.MatchString(regex, clientIP)return match
}
/**
* 限制能访问域名和IP
* Forbidden access restriction*/var RestrictionRequest = func(ctx *context.Context){allowedIPDomains := []string{"greenpacketdevice.com","www.greenpacketdevice.com","192.168.*.1","127.0.0.1"}// clientIP := ctx.Input.IP()clientDomain := ctx.Input.Domain()// 检查客户端IP或者域名是否在允许的域名列表中domainIPAllowed := falsefor _, domain := range allowedIPDomains {if RegexWildcard(domain,clientDomain) {domainIPAllowed = truebreak}}// 如果客户端IP或域名不在允许的列表中,则返回错误响应if !domainIPAllowed {ctx.ResponseWriter.WriteHeader(http.StatusForbidden)ctx.ResponseWriter.Write([]byte("Access Forbidden!"))logs.Error("Match failure : %s does not match", clientDomain)return}else{logs.Info("Match successfully")}}

动态添加请求头

func addHeaders(ctx *context.Context) {var config map[string]stringconfig, err := beego.AppConfig.GetSection("addheaders")if err == nil {for k, v := range config {ctx.ResponseWriter.Header().Set(k, v)}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com