首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确的方式连接前端和后端安全?

正确的方式连接前端和后端安全?
EN

Stack Overflow用户
提问于 2017-04-10 14:42:13
回答 1查看 1.8K关注 0票数 0

现在,我的两台服务器运行良好,并同步使用ajax将请求(Json)发送到后端。问题是,我怀疑这是实现我的目标的一个安全的方法。我有几个问题。

  1. 我对它的理解是,客户端通过网页/ajax直接访问后端,而不是前端。这是正确的思维方式吗?
  2. 解决方案是从用户抓取数据,然后通过运行前端的节点服务器发送数据,然后将其发送到后端吗?
  3. 是否有ssl进入的地方?
  4. 在当前的方法中,后端地址(http://backend.com/data)是公开的,这是一个问题吗?
  5. 是否有涵盖基本网页安全性的检查清单?我好像找不到。

这是我网页HTML中的javascript代码

代码语言:javascript
复制
    $.ajax({
      type: 'GET',
      url: 'http://backend.com/data',
      success: function(data) {
        extresults = data;
        console.log(extresults);
      }
    });

    $.ajax({
        type: 'POST',
        url: 'http://backend.com/data',
        data: {"la" : "lala"},
          success: function(data) {
        alert("post is good");
      }
    });
EN

回答 1

Stack Overflow用户

发布于 2017-04-10 15:56:11

我很难理解客户端和“客户端服务器”是什么意思,所以我将在更高的抽象级别上回答这个问题。

从最基本的级别开始,连接需要有三个属性才能开始称之为安全:机密性、验证性和验证性。

安全连接必须是保密的;也就是说,第三方不能读取或修改正在传送的数据。此属性通常由密码学提供,通过HTTPS (用于web应用程序)。如果数据在传输过程中被加密,第三方将无法读取,因为它们缺少必要的密钥。此外,在设计良好的密码系统中,攻击者将无法以一种有用的方式修改数据。它们可以替代随机数据,但是,如果没有密钥,它们就无法发送解密到要发送的数据的消息。要么解密失败,要么解密到一些不可预测的值。

必须验证安全连接,这意味着通信的双方都需要知道对方是谁。在服务器端,HTTPS提供此属性;服务器显示其HTTPS证书,客户端知道只有证书的所有者才能以这种方式表示证书。因此,如果客户端信任证书,这意味着他们信任证书的颁发者已经验证证书的所有者是他们所说的那个人,他们知道服务器就是他们认为的那个人(这是一个严重的过度简化,我建议查找HTTPS的实际工作方式)。但是,在服务器端,您需要一些其他方法来验证客户端的身份;您不需要证书就可以成为HTTPS连接中的客户端(尽管您可以使用证书!我会查找HTTPS客户端证书)。这是通过某种“登录”的方法来处理的。通常,客户端以无名小卒的身份启动连接,并向服务器提供一些信息,以证明客户端具有特定身份、用户名和密码、签名、OTP等。一旦客户端证明了他们的身份,服务器通常会给他们一个cookie,其中包含一个值,表明他们已经证明了自己的身份;一个大的随机数字,一个签名的令牌,等等。

最后,必须验证安全连接。即使您知道您的数据没有被篡改,并且您已经验证了您正在与谁交谈,您仍然不应该盲目地信任您收到的数据。客户端不太关心它从服务器接收到的数据,但是验证服务器从客户端接收的数据是绝对重要的。这意味着您不应该将从客户端接收的任何数据放入命令调用、SQL查询等。您也不应该依赖任何客户端数据来获取敏感的程序流;不要通过在请求中查找"admin=True“参数来检查用户是否是管理员。在对数据进行任何处理之前,始终要验证所接收的数据是您所期望的。

总之,您应该在服务器上安装证书并设置HTTPS;要求客户端在接受任何数据之前(通过某种方法)进行身份验证;并在使用之前验证传入的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43326181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档