Documentation
¶
Index ¶
- Constants
- func DefaultReportToJSON(endpoint string) string
- func NewReportHandlerMiddleware(opts HandlerOptions) mist.Middleware
- func WithCSPReportHandler() mist.Middleware
- func WithDefaultReportHandler() mist.Middleware
- type COOPReport
- type CSPReport
- type Handler
- type HandlerOptions
- type MemoryHandler
- func (h *MemoryHandler) GetRecentReports(limit int) ([]*SecurityReport, error)
- func (h *MemoryHandler) GetReportsByType(reportType string, limit int) ([]*SecurityReport, error)
- func (h *MemoryHandler) GetReportsSummary() (map[string]int, error)
- func (h *MemoryHandler) HandleReport(r *SecurityReport) error
- type ReportServer
- type SecurityReport
- type XSSReport
Constants ¶
View Source
const ( ReportTypeCSP = "csp" // 内容安全策略违规 ReportTypeXSS = "xss" // XSS过滤违规 ReportTypeCOOP = "coop" // 跨源打开者策略违规 ReportTypeCOEP = "coep" // 跨源嵌入者策略违规 ReportTypeCORP = "corp" // 跨源资源策略违规 ReportTypeDocument = "document" // 文档策略违规 ReportTypeHSTS = "hsts" // HSTS违规 ReportTypeExpectCT = "expectct" // Expect-CT违规 ReportTypeHPKP = "hpkp" // HPKP违规 ReportTypeFeature = "feature" // 功能违规 ReportTypeNEL = "nel" // NEL违规 )
违规报告类型
Variables ¶
This section is empty.
Functions ¶
func NewReportHandlerMiddleware ¶
func NewReportHandlerMiddleware(opts HandlerOptions) mist.Middleware
NewReportHandlerMiddleware 创建新的安全报告处理中间件
func WithCSPReportHandler ¶
func WithCSPReportHandler() mist.Middleware
WithCSPReportHandler 只处理CSP报告的中间件
Types ¶
type COOPReport ¶
type COOPReport struct {
DocumentURL string `json:"document-url"`
Disposition string `json:"disposition"`
EffectivePolicy string `json:"effective-policy"`
BlockingDocument string `json:"blocking-document"`
}
COOPReport 跨源打开者策略违规报告
type CSPReport ¶
type CSPReport struct {
CSPReport struct {
DocumentURI string `json:"document-uri"`
Referrer string `json:"referrer"`
BlockedURI string `json:"blocked-uri"`
ViolatedDirective string `json:"violated-directive"`
EffectiveDirective string `json:"effective-directive"`
OriginalPolicy string `json:"original-policy"`
Disposition string `json:"disposition"`
StatusCode int `json:"status-code"`
} `json:"csp-report"`
}
CSPReport 内容安全策略违规报告
type Handler ¶
type Handler interface {
// HandleReport 处理安全报告
HandleReport(r *SecurityReport) error
// GetRecentReports 获取最近的报告
GetRecentReports(limit int) ([]*SecurityReport, error)
// GetReportsByType 获取指定类型的报告
GetReportsByType(reportType string, limit int) ([]*SecurityReport, error)
// GetReportsSummary 获取报告摘要
GetReportsSummary() (map[string]int, error)
}
Handler 报告处理器接口
type HandlerOptions ¶
type HandlerOptions struct {
// 路径前缀
PathPrefix string
// 处理器映射 (报告类型 -> 自定义处理器)
Handlers map[string]Handler
// 默认处理器
DefaultHandler Handler
// 是否记录完整报告到日志
LogFullReport bool
}
HandlerOptions 报告处理器中间件选项
func DefaultHandlerOptions ¶
func DefaultHandlerOptions() HandlerOptions
DefaultHandlerOptions 默认报告处理器中间件选项
type MemoryHandler ¶
type MemoryHandler struct {
// contains filtered or unexported fields
}
MemoryHandler 内存报告处理器实现
func NewMemoryHandler ¶
func NewMemoryHandler(maxReports int) *MemoryHandler
NewMemoryHandler 创建新的内存报告处理器
func (*MemoryHandler) GetRecentReports ¶
func (h *MemoryHandler) GetRecentReports(limit int) ([]*SecurityReport, error)
GetRecentReports 实现Handler接口
func (*MemoryHandler) GetReportsByType ¶
func (h *MemoryHandler) GetReportsByType(reportType string, limit int) ([]*SecurityReport, error)
GetReportsByType 实现Handler接口
func (*MemoryHandler) GetReportsSummary ¶
func (h *MemoryHandler) GetReportsSummary() (map[string]int, error)
GetReportsSummary 实现Handler接口
func (*MemoryHandler) HandleReport ¶
func (h *MemoryHandler) HandleReport(r *SecurityReport) error
HandleReport 实现Handler接口
type ReportServer ¶
type ReportServer struct {
// contains filtered or unexported fields
}
ReportServer 处理安全报告的HTTP服务器组件
func NewReportServer ¶
func NewReportServer(handler Handler) *ReportServer
NewReportServer 创建新的报告服务器
func (*ReportServer) ServeHTTP ¶
func (s *ReportServer) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP 实现http.Handler接口
type SecurityReport ¶
type SecurityReport struct {
Type string `json:"type"` // 报告类型
Time time.Time `json:"time"` // 收到时间
RawData json.RawMessage `json:"raw_data"` // 原始JSON数据
ReportData map[string]interface{} `json:"report_data"` // 解析后的报告数据
UserAgent string `json:"user_agent"` // 用户代理
IPAddress string `json:"ip_address"` // IP地址
BlockedURI string `json:"blocked_uri"` // 被阻止的URI
ViolatedDir string `json:"violated_directive"` // 违反的指令
Severity int `json:"severity"` // 严重程度 (1-5)
}
SecurityReport 表示通用安全报告结构
func ParseCSPReport ¶
func ParseCSPReport(r *http.Request) (*SecurityReport, error)
ParseCSPReport 解析CSP违规报告
func ParseXSSReport ¶
func ParseXSSReport(r *http.Request) (*SecurityReport, error)
ParseXSSReport 解析XSS过滤器报告
Click to show internal directories.
Click to hide internal directories.