37 lines
962 B
Go
37 lines
962 B
Go
package middleware
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// SecurityConfig chứa tất cả các cấu hình bảo mật
|
|
type SecurityConfig struct {
|
|
// CORS configuration
|
|
CORS CORSConfig `yaml:"cors"`
|
|
// Rate limiting configuration
|
|
RateLimit RateLimiterConfig `yaml:"rate_limit"`
|
|
// Security headers configuration
|
|
Headers SecurityHeadersConfig `yaml:"headers"`
|
|
}
|
|
|
|
// DefaultSecurityConfig trả về cấu hình bảo mật mặc định
|
|
func DefaultSecurityConfig() SecurityConfig {
|
|
return SecurityConfig{
|
|
CORS: DefaultCORSConfig(),
|
|
RateLimit: DefaultRateLimiterConfig(),
|
|
Headers: DefaultSecurityHeadersConfig(),
|
|
}
|
|
}
|
|
|
|
// Apply áp dụng tất cả các middleware bảo mật vào router
|
|
func (c *SecurityConfig) Apply(r *gin.Engine) {
|
|
// Áp dụng CORS middleware
|
|
r.Use(CORS(c.CORS))
|
|
|
|
// Áp dụng rate limiting
|
|
r.Use(NewRateLimiter(c.RateLimit))
|
|
|
|
// Áp dụng security headers
|
|
r.Use(SecurityHeadersMiddleware(c.Headers))
|
|
}
|