【问题标题】:Axios - Password Exposed in res.configAxios - res.config 中暴露的密码
【发布时间】:2021-07-31 09:05:26
【问题描述】:

我正在向我的服务器发出 axios 发布请求以登录用户并在控制台中记录响应以观察返回的数据:

const Login = () => {
  const [email, setEmail] = useState("");
  const [password, setPassword] = useState("");

  const submitForm = (e) => {
    e.preventDefault();

    axios
      .post("http://127.0.0.1:3000/login", { email, password })
      .then((res) => console.log("res", res))
      .catch((err) => console.log("err", err));

    console.log({ email, password });
  };

当用户成功登录时,我会生成一个令牌,将用户的数据与这个新生成的令牌一起返回。正如您在此处看到的,我正在从响应正文中删除用户密码,以免暴露密码:

const generateToken = (user) => {
  delete user.password;

  const token = jwt.sign(user, config.appKey, { expiresIn: 86400 });

  return { ...user, ...{ token } };
};

这是控制台中记录的数据。在图片 1 中,您可以看到响应的数据部分没有密码。

但是,在响应的配置部分中,密码是公开的(参见图 2)。我的问题是,这值得关注吗?如果是这样,我如何从响应中完全删除用户的密码?

提前致谢!

【问题讨论】:

    标签: javascript node.js reactjs axios


    【解决方案1】:

    如果您的连接是安全的(HTTP over TLS,...),则无需担心。

    HTTP 响应不包含它,因为实际的响应负载是res.data

    它存储在axiosresponse object 中,因为res.config 是为请求提供给axios 的配置。但它没有存储在任何持久存储中。

    【讨论】:

    • 太棒了!感谢您的详细回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2013-08-16
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多