Ajax 如何在AWS EC2上限制对节点应用程序的API调用

Ajax 如何在AWS EC2上限制对节点应用程序的API调用,ajax,node.js,api,amazon-web-services,amazon-ec2,Ajax,Node.js,Api,Amazon Web Services,Amazon Ec2,我有一个网站托管在namescape上,在AWS EC2上有一个节点应用程序。节点应用程序只处理几个api调用。namesheap上的网站向node应用程序发送AJAX调用以接收机密信息。我正试图将节点应用程序的访问权限限制在namescape上的我的网站上,这样其他人就不能对节点应用程序进行ajax调用。我该怎么做? 谢谢你的关注 在这种情况下,保护节点应用程序的选项不多。因为您的网站源代码对每个人都是可见的,所以API键是无用的,因为它们可以用纯文本读取。如果网站在处理对节点应用程序的AJA

我有一个网站托管在namescape上,在AWS EC2上有一个节点应用程序。节点应用程序只处理几个api调用。namesheap上的网站向node应用程序发送AJAX调用以接收机密信息。我正试图将节点应用程序的访问权限限制在namescape上的我的网站上,这样其他人就不能对节点应用程序进行ajax调用。我该怎么做?
谢谢你的关注

在这种情况下,保护节点应用程序的选项不多。因为您的网站源代码对每个人都是可见的,所以API键是无用的,因为它们可以用纯文本读取。如果网站在处理对节点应用程序的AJAX调用之前提示用户登录,则可以进行身份验证

通过安装basic auth connect并将其用于您的express应用程序,可以使用express在节点应用程序中实现身份验证

var basicAuth = require('basic-auth-connect');
app.use(basicAuth(username, password));
如果您使用JQuery发出AJAX请求,那么添加身份验证很简单。将用户名和密码选项添加到您的请求中


编辑:正如Asif所建议的那样,双因素身份验证可能是一种方式,因为它提供的凭据可以确保没有人会继续使用您的服务很长一段时间。然而,在某些用例中,它可能不方便

在这种情况下,保护节点应用程序的选项不多。因为您的网站源代码对每个人都是可见的,所以API键是无用的,因为它们可以用纯文本读取。如果网站在处理对节点应用程序的AJAX调用之前提示用户登录,则可以进行身份验证

通过安装basic auth connect并将其用于您的express应用程序,可以使用express在节点应用程序中实现身份验证

var basicAuth = require('basic-auth-connect');
app.use(basicAuth(username, password));
如果您使用JQuery发出AJAX请求,那么添加身份验证很简单。将用户名和密码选项添加到您的请求中


编辑:正如Asif所建议的那样,双因素身份验证可能是一种方式,因为它提供的凭据可以确保没有人会继续使用您的服务很长一段时间。然而,在某些用例中,它可能不方便

您可以使用passport实现2-factor或oauth2

启用Cors

 var allowCrossDomain = function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

    // intercept OPTIONS method
    if ('OPTIONS' == req.method) {
        res.send(200);
    } else {
        next();
    }
};

app.use(allowCrossDomain);

您可以使用passport实现2-factor或oauth2

启用Cors

 var allowCrossDomain = function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

    // intercept OPTIONS method
    if ('OPTIONS' == req.method) {
        res.send(200);
    } else {
        next();
    }
};

app.use(allowCrossDomain);

您可以使用AWS内置的安全入站规则,通过添加前端承载的IP来限制呼叫。您可以编辑附加到EC2实例的安全组入站规则

您可以使用AWS内置的安全入站规则,通过添加前端承载的IP来限制呼叫。您将编辑附加到EC2实例的安全组的入站规则

是否有任何身份验证设置?网站不需要身份验证。只要ajax调用只来自my网站,就可以了。我只是不希望其他人看到源代码和滥用api调用地址你有任何身份验证设置吗?该网站不需要身份验证。只要ajax调用只来自my网站,就可以了。我只是不想让其他人看到源代码并滥用api调用地址。考虑到他的前端和后端是分开的,它是否已经被启用?它们是来自网站的AJAX调用。入站请求不会来自前端所在的IP地址。入站请求将直接来自用户的浏览器。考虑到他的前端和后端是分开的,它是否已经被启用?它们是来自网站的AJAX调用。入站请求不会来自前端所在的IP地址。入站请求将直接来自用户的浏览器。