Skip to content

Commit 370e95b

Browse files
committed
Format and remove 06.4.md spaces
1 parent af841e9 commit 370e95b

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

zh/06.4.md

+27-27
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,24 @@ session劫持是一种广泛存在的比较严重的安全威胁,在session技
66
我们写了如下的代码来展示一个count计数器:
77
```Go
88

9-
func count(w http.ResponseWriter, r *http.Request) {
10-
sess := globalSessions.SessionStart(w, r)
11-
ct := sess.Get("countnum")
12-
if ct == nil {
13-
sess.Set("countnum", 1)
14-
} else {
15-
sess.Set("countnum", (ct.(int) + 1))
16-
}
17-
t, _ := template.ParseFiles("count.gtpl")
18-
w.Header().Set("Content-Type", "text/html")
19-
t.Execute(w, sess.Get("countnum"))
9+
func count(w http.ResponseWriter, r *http.Request) {
10+
sess := globalSessions.SessionStart(w, r)
11+
ct := sess.Get("countnum")
12+
if ct == nil {
13+
sess.Set("countnum", 1)
14+
} else {
15+
sess.Set("countnum", (ct.(int) + 1))
2016
}
17+
t, _ := template.ParseFiles("count.gtpl")
18+
w.Header().Set("Content-Type", "text/html")
19+
t.Execute(w, sess.Get("countnum"))
20+
}
2121

2222
```
2323
count.gtpl的代码如下所示:
2424
```Go
2525

26-
Hi. Now count:{{.}}
26+
Hi. Now count:{{.}}
2727
```
2828
然后我们在浏览器里面刷新可以看到如下内容:
2929

@@ -60,27 +60,27 @@ count.gtpl的代码如下所示:
6060
第二步就是在每个请求里面加上token,实现类似前面章节里面讲的防止form重复递交类似的功能,我们在每个请求里面加上一个隐藏的token,然后每次验证这个token,从而保证用户的请求都是唯一性。
6161
```Go
6262

63-
h := md5.New()
64-
salt:="astaxie%^7&8888"
65-
io.WriteString(h,salt+time.Now().String())
66-
token:=fmt.Sprintf("%x",h.Sum(nil))
67-
if r.Form["token"]!=token{
68-
//提示登录
69-
}
70-
sess.Set("token",token)
63+
h := md5.New()
64+
salt:="astaxie%^7&8888"
65+
io.WriteString(h,salt+time.Now().String())
66+
token:=fmt.Sprintf("%x",h.Sum(nil))
67+
if r.Form["token"]!=token{
68+
//提示登录
69+
}
70+
sess.Set("token",token)
7171

7272
```
7373
### 间隔生成新的SID
7474
还有一个解决方案就是,我们给session额外设置一个创建时间的值,一旦过了一定的时间,我们销毁这个sessionID,重新生成新的session,这样可以一定程度上防止session劫持的问题。
7575
```Go
7676

77-
createtime := sess.Get("createtime")
78-
if createtime == nil {
79-
sess.Set("createtime", time.Now().Unix())
80-
} else if (createtime.(int64) + 60) < (time.Now().Unix()) {
81-
globalSessions.SessionDestroy(w, r)
82-
sess = globalSessions.SessionStart(w, r)
83-
}
77+
createtime := sess.Get("createtime")
78+
if createtime == nil {
79+
sess.Set("createtime", time.Now().Unix())
80+
} else if (createtime.(int64) + 60) < (time.Now().Unix()) {
81+
globalSessions.SessionDestroy(w, r)
82+
sess = globalSessions.SessionStart(w, r)
83+
}
8484
```
8585
session启动后,我们设置了一个值,用于记录生成sessionID的时间。通过判断每次请求是否过期(这里设置了60秒)定期生成新的ID,这样使得攻击者获取有效sessionID的机会大大降低。
8686

0 commit comments

Comments
 (0)