Reactjs 如果在React中将API密钥存储在环境变量中是不安全的,那么如何检索该密钥以便访问AWS API网关上的端点?
AWS API网关上的My endpoints要求在标头中传递此密钥,以便客户端成功地访问我的后端端点 下面是我的Reactjs 如果在React中将API密钥存储在环境变量中是不安全的,那么如何检索该密钥以便访问AWS API网关上的端点?,reactjs,aws-api-gateway,Reactjs,Aws Api Gateway,AWS API网关上的My endpoints要求在标头中传递此密钥,以便客户端成功地访问我的后端端点 下面是我的axios.js文件,它为GET/POST/PUT/DELETE设置了axios实例 import axios from 'axios' require('dotenv').config() const API_URL = process.env.REACT_APP_AWS_APIGATEWAY_BASE_URL const API_KEY = process.env.REAC
axios.js
文件,它为GET/POST/PUT/DELETE设置了axios实例
import axios from 'axios'
require('dotenv').config()
const API_URL = process.env.REACT_APP_AWS_APIGATEWAY_BASE_URL
const API_KEY = process.env.REACT_APP_AWS_APIGATEWAY_API_KEY
const AxiosInstance = axios.create({
baseURL: API_URL,
headers : {
Accept: 'application/json',
'Content-Type': 'application/json',
'Authorization' : API_KEY,
'X-API-KEY': API_KEY
}
});
const getAPI = (apiUrl,params) => AxiosInstance.get(apiUrl,params);
const postAPI = (apiUrl, data,params) => AxiosInstance.post(apiUrl, data,params);
const putAPI = (apiUrl, data,params) => AxiosInstance.put(apiUrl, data,params);
const deleteAPI = (apiUrl,data,params) => AxiosInstance.delete(apiUrl,data,params);
export {
postAPI,
getAPI,
putAPI,
deleteAPI,
API_URL
};
export default AxiosInstance;
你的应用程序有用户吗 如果是这样,您应该实现某种身份验证/授权逻辑
如果不是,并且允许开放Internet上的每个人自由调用这些API方法,我想您可以考虑建立一个微服务,在请求时将返回<代码> ApIIKEKEY/代码>,并将其存储在客户端的存储中(API\u键。
API\u密钥
会有所不同吗?所以,我要说的是,至少实现某种类型的键旋转,每个键在一天或几天内过期。对我来说,如果一个端点可以像那样被击中,这是非常危险的,特别是当服务器逻辑操作数据库时。或者在服务器上以某种方式实现一些去抖动/阻塞,以最大限度地减少来自某个IP地址的滥用。我想有很多解决方案。那么API密钥是否毫无意义呢?总比什么都没有好,但如果你的潜在攻击者至少有点老练的话,就不会有太多。也许不是严格意义上的默默无闻的安全,但不是非常有效的安全。