2017 年想从设计转行做前端
闭门苦读半年发现没人愿意要,于是自己一个人 1 个月做了一个资讯网站,用来做找工作的案例
后来生活稳定了(靠接外包,依旧没有找到工作),也没继续更新了。现在想撤下来做点别的东西,旧站有人需要可以拿去随意使用
分为三部分,用户前台,管理后台和 api
有完整的用户投稿和后台审核功能
demo:https://www.nine00.com
源码:https://github.com/witcat/900GUIDE
![]() | 1 vissssa 2018-10-29 17:15:12 +08:00 顶一个 |
![]() | 2 Pi7bo1 2018-10-29 17:21:26 +08:00 萌新学习 |
3 w4n9hu1 2018-10-29 17:35:20 +08:00 设计很好看 |
![]() | 4 DeWhite 2018-10-29 17:38:03 +08:00 缺个远程程序员,月包 3K 活少 事情少。 同做资讯,方向电竞。有意私聊。 |
5 746215017chen 2018-10-29 17:57:23 +08:00 @DeWhite 兼职不 |
![]() | 7 O3YwA1ENkb7i35XJ 2018-10-29 19:18:19 +08:00 @witcat 代码有 bug. 漏洞证明: https://www.nine00.com/u/projectds 漏洞描述: 任意用户密码重置漏洞. 漏洞证明所用 EMAIL: [email protected] (来自于 github 仓库中 git log 里面的 email). |
![]() | 8 witcat OP @xqin #7 额...厉害厉害 这个项目已经放弃了 bug 有兴趣的各位可以修复 不过你是怎么把重置代码拿到的....??? |
![]() | 9 O3YwA1ENkb7i35XJ 2018-10-29 19:23:51 +08:00 @witcat 你猜猜看 :P |
![]() | 11 DeWhite 2018-10-29 19:33:34 +08:00 |
![]() | 12 O3YwA1ENkb7i35XJ 2018-10-29 19:33:48 +08:00 1. 向 `/user/retrivepw` 发起请求, 参数 step:1, 以及要重置的目标 EMAIL 2. 向 `/user/resetemail` 发起请求, 参数 step:1, 之后去自己的邮箱里面收邮件, 查看生成的随机 CODE 3. 向 `/user/retrivepw` 发起请求, 参数 "step":3, "password":"helloworld","secret":CODE 第一步, 在 Session 中记录要被重置的 EMAIL 地址. 第二步, 接收再次生成的 CODE,覆盖原来的那个. 第三步, 提交新生成的 CODE 和密码, 完成密码重置(当然重置的是第一步提交的那个 EMAIL 所对应的账号,而不是当前登陆的). 以上操作步骤 建立在自己已经创建一个小号,并且已经登陆的状态下,小号的邮箱需要可以接收邮件. |
![]() | 13 O3YwA1ENkb7i35XJ 2018-10-29 19:36:18 +08:00 @witcat 被重置密码的那个账号, 修改了个人主页的背景图片,无破坏性测试. 请勿见怪. 谢绝查水表. 谢谢. |
![]() | 16 O3YwA1ENkb7i35XJ 2018-10-29 19:43:31 +08:00 ![]() 第一步对应的代码: ``` router.post('/retrivepw', function(req, res) { switch (req.body.step) { //第一步,生成代码并发送邮件 case 1: req.session.retrivecode = randomString(15); req.session.email = req.body.email; //// Session 中记下被重置的 EMAIL req.session.cookie.expires = new Date(Date.now() + 600000); ``` 第二步: ``` router.post('/resetemail', function(req, res) { switch (req.body.step) { case 1: db.users.findOne({ _id: req.session.userid }, function(err, user) { req.session.retrivecode = randomString(15); // 重新生成 CODE, 覆盖原来的, 该 CODE 会被发到自己的邮箱里 ``` 第三步: ``` case 3: if (req.body.secret != req.session.retrivecode) { /// 提交收到的 CODE, 以便让 if 不成立走后面的代码 return res.send('bad') } db.users.findOne({ email: req.session.email ////// 取出之前 Session 中写入的 EMAIL }, function(err, doc) { doc.salt = randomString(15); doc.pass = md5(req.body.password + doc.salt); // 更新密码, 完成重置. doc.save(function(err) { req.session.destroy() //当成功保存,销毁 session,不可能无限进入第三步,所以同样的信息,密码只能重置一回 res.send('ok') }) }) ``` |
![]() | 17 iyouyue 2018-10-29 19:59:49 +08:00 via iPhone 不错 |
![]() | 18 ZiLong 2018-10-30 10:10:38 +08:00 archived? |
19 zhutiwave 2018-10-30 11:36:45 +08:00 想问一下如何接到外包,猪八戒?? |
![]() | 21 Desiree 2018-10-30 16:58:29 +08:00 设计大佬真的恐怖 |