正确连接前端到后端的方法安全吗?

时间:2017-04-10 14:42:14

标签: javascript node.js ajax security server

现在我的两台服务器都运行良好并且同步使用ajax到GET和POST请求(Json)到我的后端。问题是我怀疑这是实现我的目标的安全方式。我有几个问题。

  1. 我的理解是客户端通过网页/ ajax,而不是前端直接访问后端。这是一种正确的思考方式吗?

  2. 解决方案是从用户那里获取数据然后通过运行前端的节点服务器发送,然后将其发送到后端吗?

  3. 是否有ssl步入的地方?

  4. 在当前方法中,后端地址(http://backend.com/data)是公开的,这是一个问题吗?

  5. 是否有涵盖基本网页安全性的清单?我似乎找不到一个。

  6. 这是我的网页HTML中的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");
          }
        });
    

1 个答案:

答案 0 :(得分:0)

我在理解客户端与客户端服务器"的含义时遇到一些麻烦,因此我将以略高的抽象级别回答这个问题。

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

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

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

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

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