小二的在编程技术上的幼稚远超出你我的想象。

By 阿離 at 2020-04-26

测试了注册模块,虽然在页面上写着”允许字母、数字、中文,不能全为数字,4~12个字节”

實際上卻可以使用超長字符串,密码一个字符或数字就可以 ,比如密码是“1”,“a”,”D”,这都行。

连基本的字段约束都没有。

还不如我这个中专生,吐槽真的没错误。

我都怀疑他密码是不是明文化了。

编程技术, 小二, 幼稚, 超出, 想象


就这样的技术,踏上自己的性命,去做最危险的政治工作,

容我吐槽一句:不仅对自己性命不负责,也是对其信任的朋友的不负责

就这样连it培训班里出来的初中毕业生都不如的程度,他是如何有胆量去为新品葱做一年的后台开发的。

小二他究竟暴露了多少自己和他人多少的个人信息?

阿離 at 2020-04-26
2

”允许字母、数字、中文,不能全为数字,4~12个字节” 指的是登录名不是密码

小⼆ at 2020-04-26
3

@小⼆ #3 我是阿篱,测试完毕。

b at 2020-04-26
4

容我吐槽一句,就这样的IT萌新,去说BE4是追踪狂。现在回想起来真的是小学生在指责大学生的感觉。

阿離 at 2020-04-26
5

@阿離 #5

这二位都是小学生吧

dou4cc at 2020-04-26
6

我都怀疑他密码是不是明文化了。

你新来的? 本站开源

dou4cc at 2020-04-26
7

应该说是代码和 ”允许字母、数字、中文,不能全为数字,4~12个字节” 的描述不符

小⼆ at 2020-04-26
9

@小⼆ #8 他这个正则没起作用。那么问题就来了,github上的开源代码和生产环境中不是一个版本。

阿離 at 2020-04-26
10

这怕那怕,一个个贼样,退站就是,bb啥呢。

怕得个胆小如鼠,一老鼠,还反,藏在暗无天日的洞里就是啊

笑翻江山 at 2020-04-26
11

@小⼆ #9 这段正则我没经过测试就否定不是一个版本,是我着急断言了,抱歉。

阿離 at 2020-04-26
12

@阿離 #10
怎么没起作用?

小⼆ at 2020-04-26
13

@小⼆ #13 作用是起了,但是他写的不准确,等于没用。 其实这段约束他可以直接网上摘抄的,何必完全自己动手写,安全漏洞太大。

阿離 at 2020-04-26
14

密码md5后保存。。。

张怀义 at 2020-04-26
15

注册页面源码

https://github.com/Terminus2049/2049bbs/blob/b65c6211bd4d59ff8e0cf6e9a5f25431d47a9bff/controller/user.go#L91

// register

``siteCf := h.App.Cf.Site if siteCf.CloseReg { w.Write([]byte({"retcode":400,"retmsg":"stop to new register"})) return } if db.Hget(“user_name2uid”, []byte(nameLow)).State == “ok” { w.Write([]byte({"retcode":405,"retmsg":"name is exist","newCaptchaId":" + captcha.New() + "})) return }

    userId, _ := db.HnextSequence("user")
    flag := 5
    if siteCf.RegReview {
        flag = 1
    }

    if userId == 1 {
        flag = 99
    }

    uobj := model.User{
        Id:            userId,
        Name:          rec.Name,
        Password:      rec.Password,
        Flag:          flag,
        RegTime:       timeStamp,
        LastLoginTime: timeStamp,
        Session:       xid.New().String(),
    }

    // 从指定的用户中随机选一个头像作为新注册用户头像
    // 指定用户必须连续,取最小id和最大id

    rand.Seed(time.Now().UnixNano())
    min := siteCf.AvatarMinId // 2539
    max := siteCf.AvatarMaxId // 2558
    sampleID := rand.Intn(max-min+1) + min
    uidStr := strconv.FormatUint(uint64(sampleID), 10)
    uobj.Avatar = uidStr
    uobj.IgnoreLimitedUsers = true

    jb, _ := json.Marshal(uobj)
    db.Hset("user", youdb.I2b(uobj.Id), jb)
    db.Hset("user_name2uid", []byte(nameLow), youdb.I2b(userId))
    db.Hset("user_flag:"+strconv.Itoa(flag), youdb.I2b(uobj.Id), []byte(""))

    h.SetCookie(w, "SessionID", strconv.FormatUint(uobj.Id, 10)+":"+uobj.Session, 365)
}``
firedown at 2020-04-26
16