You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

待办应用登录页验证失效求助:任意账号均可无限制登录

登录验证逻辑错误导致无限制访问的解决方案

核心问题分析

你的后端登录接口逻辑存在致命错误:当执行db.query后,无论是否查询到匹配的用户,data都会是一个数组(哪怕是空数组)。而在JavaScript中,空数组属于真值(truthy),所以else if(data)的判断永远为真,导致无论输入是否正确,都会返回"login successful"。

修正后的后端代码

app.post('/login', (req, res) => {
  const sql = "SELECT * FROM user_details WHERE `email`= ? AND `password`= ?";
  db.query(sql, [req.body.email, req.body.password], (err, data) => {
    if(err) {
      return res.json(err);
    } 
    // 只有查询到至少一条匹配记录时,才判定登录成功
    else if(data.length > 0) {
      return res.json("login successful");
    } else {
      return res.json("login failed");
    }
  })
})

额外注意事项

  1. 密码安全问题:当前代码中密码是明文存储在数据库中的,这是严重的安全隐患。建议使用bcrypt等库对密码进行哈希加密后再存储,验证时也需要对输入的密码进行哈希比对,而不是直接明文匹配。
  2. 前端状态更新异步问题:前端handleSubmit中,调用setErrors(validation(values))后立即判断errors的值,由于setErrors是异步更新状态的,此时的errors可能还是更新前的旧值。可以改成在validation函数直接返回结果,再基于结果判断是否发起请求。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:05:00