mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-11-04 16:40:21 +00:00
fix: harden dashboard security boundaries
This commit is contained in:
1 parent
c726930833
commit
36b742a7e9
12 files changed
+357
-46
No files matched your search
@@ -0,0 +1,54 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/nezhahq/nezha/model"
|
||||
"github.com/nezhahq/nezha/service/singleton"
|
||||
)
|
||||
|
||||
func TestGetServerConfigForeignAndUnknownIDsAreIndistinguishable(t *testing.T) {
|
||||
cleanup, _ := setupMCPTest(t)
|
||||
defer cleanup()
|
||||
require.NoError(t, singleton.DB.Create(&model.User{Common: model.Common{ID: 200}, Username: "bob", Role: model.RoleMember}).Error)
|
||||
tok, _ := mkToken(t, 200, []string{model.ScopeServerRead}, nil)
|
||||
|
||||
probe := func(id string) error {
|
||||
c, _ := patRequestCtx(t, tok, 200, http.MethodGet, "/api/v1/server/config/"+id, nil)
|
||||
c.Params = gin.Params{{Key: "id", Value: id}}
|
||||
_, err := getServerConfig(c)
|
||||
return err
|
||||
}
|
||||
|
||||
foreignErr := probe("7")
|
||||
unknownErr := probe("999999")
|
||||
require.Error(t, foreignErr)
|
||||
require.Error(t, unknownErr)
|
||||
require.Equal(t, foreignErr.Error(), unknownErr.Error())
|
||||
}
|
||||
|
||||
func TestSetServerConfigForeignAndUnknownIDsAreIndistinguishable(t *testing.T) {
|
||||
cleanup, _ := setupMCPTest(t)
|
||||
defer cleanup()
|
||||
require.NoError(t, singleton.DB.Create(&model.User{Common: model.Common{ID: 200}, Username: "bob", Role: model.RoleMember}).Error)
|
||||
tok, _ := mkToken(t, 200, []string{model.ScopeServerWrite}, nil)
|
||||
|
||||
probe := func(id uint64) error {
|
||||
c, _ := patRequestCtx(t, tok, 200, http.MethodPost, "/api/v1/server/config", model.ServerConfigForm{
|
||||
Servers: []uint64{id},
|
||||
Config: "{}",
|
||||
})
|
||||
_, err := setServerConfig(c)
|
||||
return err
|
||||
}
|
||||
|
||||
foreignErr := probe(7)
|
||||
unknownErr := probe(999999)
|
||||
require.Error(t, foreignErr)
|
||||
require.Error(t, unknownErr)
|
||||
require.Equal(t, foreignErr.Error(), unknownErr.Error())
|
||||
}
|
||||
Reference in new issue
Block a user