在axios请求中包括密码的安全方法是什么?

时间:2019-06-30 09:32:58

标签: javascript reactjs security

我正在构建一个属性搜索应用程序,并访问需要传递令牌并获取令牌所需的属性,我已经获得了用户名和密码。

我正在尝试请求令牌,该令牌需要与标头一起发送的用户名和密码。

我正在使用axios来处理此发布请求。

        let tokenURL =  process.env.REACT_APP_TOKEN;
        let username = process.env.REACT_APP_USERNAME;
        let password = process.env.REACT_APP_PASSWORD;

        const user = new URLSearchParams()
        user.append('username', username)
        user.append('password', password)
        return await  axios.post(tokenURL, user)
            .then(function (response) {
                localStorage.setItem('token', response.data.token)
                return response.data.token
            })

    }

但是问题是,当我检查代码时,可以看到用户名和密码(显然)。 那么,处理此请求的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我通过创建服务器端文件auth.php解决了这个问题,现在我没有在我的react应用程序中调用tokenURL,而是在调用返回令牌的auth.php URL。

不确定这是否是最好的方法,但至少不会以这种方式公开用户名和密码

<?php
$url = 'http://example/login_check'; 


$data = array('username' => 'xxx', 'password' => 'xxx');

// use key 'http' even if you send the request to https://...
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { echo 'err'; }
echo json_decode($result)->token;