secapi

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

README

checkurl

本函数类用于校验URL的合法性,用于防止跳转漏洞、SSRF漏洞。

简介

函数 说明
secapi.CheckUrl(urlToCheck, ... newSecOptions) 根据规则检查URL的合法性
secapi.NewSchemeConfigure(schemeArr) 构造URL协议白名单
secapi.NewHostConfigure(hostMap) 构造URL主机域名白名单

提供三种模式,用法如下:

模式 介绍
equal 域名全等匹配
subhost 根域名后缀匹配
regex 正则匹配

入参介绍如下:

参数 介绍 样例
urlToCheck 待校验的URL(需含协议+域名),如传入相对路径,会直接返回校验通过 http://www.xwc1125.com
newSecOptions 校验规则 schemeArr := []string{"http","https"}
hostMap := &hostOptions{ CheckMod: "subhost",
RuleArr: []string{"xwc1125.com"}}

示例

secapi.CheckUrl

package secapi

import (
	"fmt"
	"testing"
)

func TestCheck(t *testing.T) {
	urlToCheck := "http://xwc1125.com@abc.com:80"

	// schemeArr 允许的URL协议
	schemeArr := []string{"http", "https"}
	// hostMap 允许的URL域名
	hostMap := &HostOptions{
		CheckMod: "subhost",               // 根域名后缀匹配模式,支持equal、subhost和regex三种模式
		RuleArr:  []string{"xwc1125.com"}, // 允许xwc1125.com及其子域名
	}

	schemeWhiteList := NewSchemeConfigure(schemeArr)
	hostWhiteList := NewHostConfigure(hostMap)

	result, err := CheckUrl(urlToCheck, schemeWhiteList, hostWhiteList)
	if err != nil {
		fmt.Print(err)
		fmt.Print(result)
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckUrl

func CheckUrl(urlToCheck string, opts ...newSecOptions) (bool, error)

CheckUrl 校验URL的合法性

func NewHostConfigure

func NewHostConfigure(hostMap *HostOptions) newSecOptions

NewHostConfigure 添加域名白名单

func NewSchemeConfigure

func NewSchemeConfigure(schemeArr []string) newSecOptions

NewSchemeConfigure 添加协议白名单

Types

type HostOptions

type HostOptions struct {
	// 支持equal - 代表域名全匹配,subhost - 域名后缀匹配,regex - 代表使用正则匹配;默认是equal模式
	CheckMod string
	// 支持传入多个完整域名及正则表达式
	RuleArr []string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL