mirror of
https://github.com/filebrowser/filebrowser.git
synced 2026-01-22 18:27:42 +00:00
Merge commit from fork
Added a dummy bcrypt hash to prevent user enumeration timing attacks in JSON authentication.
This commit is contained in:
parent
4094fb359b
commit
24781badd4
1 changed files with 15 additions and 1 deletions
16
auth/json.go
16
auth/json.go
|
|
@ -14,6 +14,10 @@ import (
|
|||
// MethodJSONAuth is used to identify json auth.
|
||||
const MethodJSONAuth settings.AuthMethod = "json"
|
||||
|
||||
// dummyHash is used to prevent user enumeration timing attacks.
|
||||
// It MUST be a valid bcrypt hash.
|
||||
const dummyHash = "$2a$10$O4mEMeOL/nit6zqe.WQXauLRbRlzb3IgLHsa26Pf0N/GiU9b.wK1m"
|
||||
|
||||
type jsonCred struct {
|
||||
Password string `json:"password"`
|
||||
Username string `json:"username"`
|
||||
|
|
@ -52,7 +56,17 @@ func (a JSONAuth) Auth(r *http.Request, usr users.Store, _ *settings.Settings, s
|
|||
}
|
||||
|
||||
u, err := usr.Get(srv.Root, cred.Username)
|
||||
if err != nil || !users.CheckPwd(cred.Password, u.Password) {
|
||||
|
||||
hash := dummyHash
|
||||
if err == nil {
|
||||
hash = u.Password
|
||||
}
|
||||
|
||||
if !users.CheckPwd(cred.Password, hash) {
|
||||
return nil, os.ErrPermission
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, os.ErrPermission
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue