Skip to content

Commit dc99130

Browse files
committed
Fix typo getting password cookie. Security-harden cookie usage.
1 parent 008a8be commit dc99130

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

pkg/api/keystone/keystone.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func getNewToken(c *middleware.Context) (string, error) {
6767
var keystonePasswordObj interface{}
6868
if setting.KeystoneCookieCredentials {
6969
if setting.KeystoneCredentialAesKey != "" {
70-
c.GetCookie(middleware.SESS_KEY_PASSWORD)
70+
keystonePasswordObj = c.GetCookie(middleware.SESS_KEY_PASSWORD)
7171
} else {
7272
keystonePasswordObj = c.GetCookie(middleware.SESS_KEY_PASSWORD)
7373
}

pkg/api/login.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
m "github.com/grafana/grafana/pkg/models"
1414
"github.com/grafana/grafana/pkg/setting"
1515
"github.com/grafana/grafana/pkg/util"
16+
"gopkg.in/macaron.v1"
1617
)
1718

1819
const (
@@ -117,7 +118,14 @@ func LoginPost(c *middleware.Context, cmd dtos.LoginCommand) Response {
117118
cmd.Password = keystone.EncryptPassword(cmd.Password)
118119
}
119120
if setting.KeystoneCookieCredentials {
120-
c.SetCookie(middleware.SESS_KEY_PASSWORD, cmd.Password)
121+
log.Debug("c.Req.Header.Get(\"X-Forwarded-Proto\"): %s", c.Req.Header.Get("X-Forwarded-Proto"))
122+
var days interface{}
123+
if setting.LogInRememberDays == 0 {
124+
days = nil
125+
} else {
126+
days = 86400 * setting.LogInRememberDays
127+
}
128+
c.SetCookie(middleware.SESS_KEY_PASSWORD, cmd.Password, days, setting.AppSubUrl+"/", nil, isSecure(&c.Req), true)
121129
} else {
122130
c.Session.Set(middleware.SESS_KEY_PASSWORD, cmd.Password)
123131
}
@@ -144,17 +152,22 @@ func loginUserWithUser(user *m.User, c *middleware.Context) {
144152

145153
days := 86400 * setting.LogInRememberDays
146154
if days > 0 {
147-
c.SetCookie(setting.CookieUserName, user.Login, days, setting.AppSubUrl+"/")
148-
c.SetSuperSecureCookie(util.EncodeMd5(user.Rands+user.Password), setting.CookieRememberName, user.Login, days, setting.AppSubUrl+"/")
155+
c.SetCookie(setting.CookieUserName, user.Login, days, setting.AppSubUrl+"/", nil, isSecure(&c.Req), true)
156+
c.SetSuperSecureCookie(util.EncodeMd5(user.Rands+user.Password),
157+
setting.CookieRememberName, user.Login, days, setting.AppSubUrl+"/", nil, isSecure(&c.Req), true)
149158
}
150159

151160
c.Session.Set(middleware.SESS_KEY_USERID, user.Id)
152161
}
153162

154163
func Logout(c *middleware.Context) {
155-
c.SetCookie(setting.CookieUserName, "", -1, setting.AppSubUrl+"/")
156-
c.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubUrl+"/")
157-
c.SetCookie(middleware.SESS_KEY_PASSWORD, "", -1, setting.AppSubUrl+"/")
164+
c.SetCookie(setting.CookieUserName, "", -1, setting.AppSubUrl+"/", nil, isSecure(&c.Req), true)
165+
c.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubUrl+"/", nil, isSecure(&c.Req), true)
166+
c.SetCookie(middleware.SESS_KEY_PASSWORD, "", -1, setting.AppSubUrl+"/", nil, isSecure(&c.Req), true)
158167
c.Session.Destory(c)
159168
c.Redirect(setting.AppSubUrl + "/login")
160169
}
170+
171+
func isSecure(r *macaron.Request) bool {
172+
return (r.TLS != nil) || (r.Header.Get("X-Forwarded-Proto") == "https")
173+
}

pkg/middleware/session.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
const (
1515
SESS_KEY_USERID = "uid"
1616
SESS_KEY_OAUTH_STATE = "state"
17-
SESS_KEY_PASSWORD = "password"
17+
SESS_KEY_PASSWORD = "grafana_password"
1818
)
1919

2020
var sessionManager *session.Manager

0 commit comments

Comments
 (0)