限制来自节点应用程序外部的ajax调用

时间:2017-02-21 09:05:28

标签: javascript jquery ajax node.js express

我想限制除我的应用程序之外的AJAX调用。当我从应用程序外部调用时,即使AJAX调用的url被复制并粘贴到浏览器中,我也不希望我的AJAX请求发送响应。我正在使用node,express和mongodb。

2 个答案:

答案 0 :(得分:0)

我所做的是在我的ajax调用中添加一些标题:

// javascript
$.ajax({
    type: 'POST',
    dataType: 'json',
    headers: {"Content-Type": "application/json", "app-ver": 1.5}
})
.

// php
$client_ver = floatval($_SERVER['HTTP_APP_VER']);

// I also check $_SERVER['CONTENT_TYPE'] to be: 'application/json'
// and post method. (ask me I'll add)

if ( $client_ver != 1.5 )
{
    echo '{}';
    exit();
}

编辑: 另一种方法是使用您的应用创建“会话”,这意味着成功登录后的每个请求都必须携带一个令牌(至少) 并让您的应用程序附加许多唯一的标头键值,只有您的服务器可以识别,并且没有任何两个请求是相似的(例如:在标头中包含时间,并使用REST命令对其进行散列,并让服务器检查它以使其生成确定它是一个独特的命令,它不仅仅是被操纵。 *您必须知道您的会话创建算法,并且它必须是唯一的,或者如果您不知道该怎么做,我建议您更多地研究它。

答案 1 :(得分:0)

如果您的应用程序在用户的计算机上运行(如JavaScript Web应用程序),则无法阻止某人从您的应用程序外部拨打电话。你可以通过在每个请求中使用随机数来增加难度,但即使这样,有人也可以构建自己的应用程序,模仿你的应用程序并以正确的顺序进行调用。

简而言之:您无法完全信任客户,也无法阻止某人欺骗客户。您需要重新检查您的要求。

相关问题