对于有规则的数据索引,比如用户ID,商品ID,订单编号,很容易第三方直接遍历抓取资源。采用liamylian/json-hashids进行加密,可以有效避免这类情况发生。但因为是对等加密,需注意该加密算法并不安全,使用时需注意场景,详情请见hashids。
package main
import(
"fmt"
"github.com/liamylian/json-hashids"
"time"
)
var json = jsonhashids.NewConfigWithHashIDs("abcdefg", 10)
type Book struct {
Id int `json:"id" hashids:"true"` // 这里要给id打上hashids的tag
Name string `json:"name"`
}
func main() {
book := Book {
Id: 1,
Name: "Jane Eyre",
}
bytes, _ := json.Marshal(book)
// 输出: {"id":"gYEL5rKBnd","name":"Jane Eyre"}
fmt.Printf("%s", bytes)
}