mongoose 如何隐藏Axios HTTP请求中的URL或以其他方式添加安全性?

6pp0gazn  于 2023-02-23  发布在  Go
关注(0)|答案(1)|浏览(171)

我正在做一个MERN堆栈(MongoDB,Express,React,Node)项目,我需要在React组件中向数据库发出HTTP请求,以获取模型的字段。我使用Axios(可以使用任何其他方法),但问题是我想隐藏URL,但不知道如何隐藏。

对我来说,重要的是获取“category”字段并将其显示在组件中

import React, {useState, useEffect} from "react"
import Heading from "../../common/Heading"

import "./Location.css"
import axios from 'axios'

const Location = () => {

  const [locations, setLocations] = useState([]);

  useEffect(() => {
    const fetchData = async () => {
      const result = await axios.get('http://localhost:5000/properties/categories'//this is what I want to hide);
      setLocations(result.data);
    };
    fetchData();
  }, []);

  return (
    <>
      <section className='location padding'>
        <div className='container'>
          <Heading title='Explore By Location' subtitle='Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.' />

          <div className='content grid3 mtop'>
            {locations.map((item, index) => (
              <div className='box' key={index}>
                <img src={} alt='' />
                <div className='overlay'>
                  <h5>{}</h5>
                  <p>
                    <label>{}</label>
                    <label>{}</label>
                    <label>{}</label>
                  </p>
                </div>
              </div>
            ))}
          </div>
        </div>
      </section>
    </>
  )
}

export default Location

为了以防万一,这段代码还没有完成。服务器是用Express和Mongoose设置的,作为与MongoDB交互的一种方式。
有人告诉我,他们只发出没有URL的POST请求,总是发送相同的JSON,然后用base 64对后端使用的JSON解析进行加密,并将所有请求指向相同的URL。
我知道在前端留下这样的URL不是一个好主意,即使它没有得到任何敏感信息,只是不知道当完成它是否会通过SSL证书测试。
此外,我的应用程序根本没有和使用敏感信息,所有请求都是GET,以查看存储在DB中的信息

w6mmgewl

w6mmgewl1#

您可以找到在运行时生成URL字符串的变通方法,但这真的不值得付出努力,因为您将从客户端的浏览器向后端发送这些请求,他们可以检查网络选项卡并查看向后端发出的请求,这很好。
您可以将注意力转移到前端和后端之间更好、更安全的通信上。例如:

  • 使用HTTPS来加密POST请求主体,如果您仍然没有得到一个,您现在可能需要使用Let's encrypt
  • 通过身份验证、速率限制、API密钥和CORS保护您的API端点(参见OWASP的建议)。
  • 不要在前端暴露任何秘密,React不需要知道数据库的任何信息(主机,ip,用户名等),后端express应用程序是数据库的代理,并且(express)应该以安全的方式与MongoDB通信。

相关问题