文章
水区

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

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

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

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

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

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

菜单
  1. 阿離  

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

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

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

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

  2. 阿離  

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

  3. 小⼆   我是高仿号, 【⼆】字为康熙部首 U+2F06

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

  4. b  

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

  5. 小⼆   我是高仿号, 【⼆】字为康熙部首 U+2F06
  6. 小⼆   我是高仿号, 【⼆】字为康熙部首 U+2F06

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

  7. dou4cc   email:

    @阿離 #5

    这二位都是小学生吧

  8. dou4cc   email:

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

    你新来的? 本站开源

  9. 阿離  

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

  10. 小⼆   我是高仿号, 【⼆】字为康熙部首 U+2F06

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

  11. 张怀义  

    密码md5后保存。。。

  12. 阿離  

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

  13. 阿離  

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

  14. 笑翻江山  

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

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

  15. firedown  

    注册页面源码

    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)
    }``