aboutsummaryrefslogtreecommitdiffstats
path: root/modules/context/csrf.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/context/csrf.go')
-rw-r--r--modules/context/csrf.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/modules/context/csrf.go b/modules/context/csrf.go
index 99c223c884..1fb992e2ae 100644
--- a/modules/context/csrf.go
+++ b/modules/context/csrf.go
@@ -19,13 +19,14 @@
package context
import (
+ "encoding/base32"
+ "fmt"
"net/http"
"time"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web/middleware"
-
- "github.com/unknwon/com"
)
// CSRF represents a CSRF service and is used to get the current token and validate a suspect token.
@@ -162,7 +163,12 @@ func prepareOptions(options []CsrfOptions) CsrfOptions {
// Defaults.
if len(opt.Secret) == 0 {
- opt.Secret = string(com.RandomCreateBytes(10))
+ randBytes, err := util.CryptoRandomBytes(8)
+ if err != nil {
+ // this panic can be handled by the recover() in http handlers
+ panic(fmt.Errorf("failed to generate random bytes: %w", err))
+ }
+ opt.Secret = base32.StdEncoding.EncodeToString(randBytes)
}
if len(opt.Header) == 0 {
opt.Header = "X-CSRFToken"
@@ -211,7 +217,7 @@ func Csrfer(opt CsrfOptions, ctx *Context) CSRF {
x.ID = "0"
uid := ctx.Session.Get(opt.SessionKey)
if uid != nil {
- x.ID = com.ToStr(uid)
+ x.ID = util.ToStr(uid)
}
needsNew := false