Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可编辑javascript和Ajax_Javascript_Ajax_Node.js - Fatal编程技术网

可编辑javascript和Ajax

可编辑javascript和Ajax,javascript,ajax,node.js,Javascript,Ajax,Node.js,我有一个非jQuery ajax函数: function callAjax(){ //will be sent to node server var xmlhttp; // compatible with IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if (xmlhttp.r

我有一个非jQuery ajax函数:

function callAjax(){ //will be sent to node server
    var xmlhttp;
    // compatible with IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
        canAjax = true;
        //do something
        }
    }
    xmlhttp.open("GET", "string", true);
    xmlhttp.send();
}
以及一个调用它的函数:

function a(){

    if(mouseIdle && canAjax){

    callAjax()
    }

}
这是我提供给客户的一种api,具有以下特性:

<script src = "mysrc">

问题是,任何人都可以很容易地删除这些if,如果他们愿意的话(包括他们的客户),而我无法找到一种方法使其不可编辑,或者至少可以预防。我只想让我的javascript代码从内部不可触及,怎么才能做到呢?

不行

您发送给客户端的任何内容都可以由最终用户编辑,也可以复制、编辑并放置在其他网站上

如果要限制对Ajax端点的访问,则需要在服务器上设置保护。例如,使用IP地址链接的速率限制。

它不能

您发送给客户端的任何内容都可以由最终用户编辑,也可以复制、编辑并放置在其他网站上


如果要限制对Ajax端点的访问,则需要在服务器上设置保护。例如,IP地址链接的速率限制。

就像昆汀说的,你不能在客户端控制JavaScript,这就是web的工作方式

您可以使用令牌实现一个简单的身份验证系统

您的令牌应该是一些难以猜测的东西,以阻止暴力攻击,如当前的SHA256哈希。sha256的空哈希如下所示:

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
然后,您可以将该令牌密钥保存在数据库(MongoDB、MySQL或其他)中,并且您需要强制客户机在其发出的每个请求中发送令牌


在此之后,您只需验证该密钥的使用配额,并决定是否提供服务。

正如昆汀所说,您无法在客户端控制JavaScript,这就是web的工作方式

您可以使用令牌实现一个简单的身份验证系统

您的令牌应该是一些难以猜测的东西,以阻止暴力攻击,如当前的SHA256哈希。sha256的空哈希如下所示:

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
然后,您可以将该令牌密钥保存在数据库(MongoDB、MySQL或其他)中,并且您需要强制客户机在其发出的每个请求中发送令牌


在此之后,您只需验证该密钥的使用配额,并决定是否提供服务。

JavaScript是客户端,您无法控制它。丑化您的代码可以帮助您。JavaScript是客户端,您无法控制它。另一种方法是添加一个简单的auth方法,比如一个令牌,这样他就可以控制对该客户端的请求,而不考虑IPaddress@rafaelcpalmeida-这将取决于能否限制特定人员进入终点,这个问题给我的印象不是可行的。控制Ajax请求或一般请求的推荐方法是什么?我需要确保客户不会向我提出过多的请求。@user1938653-请参阅我回答的最后一段。嘿,rafaelcpalmeida,这个象征性的想法听起来不错。还有一种方法是添加一个简单的auth方法,比如一个令牌,这样他就可以控制对该客户机的请求,而不考虑IPaddress@rafaelcpalmeida-这将取决于能否限制特定人员进入终点,这个问题给我的印象不是可行的。控制Ajax请求或一般请求的推荐方法是什么?我需要确保客户不会向我提出过多的请求。@user1938653-请参阅我回答的最后一段。嘿,rafaelcpalmeida,这个象征性的想法听起来不错。有关于如何实现一个的例子吗?回答得很好。顺便说一句,一旦用户停止使用网站,应该如何从数据库中删除令牌?@user1938653-您可以构建一个非常简单的后台办公室供自己使用,以控制哪些令牌可以访问端点,以及使用量有多大。顺便说一句,一旦用户停止使用网站,应该如何从数据库中删除令牌?@user1938653-您可以构建一个非常简单的后台办公室供自己使用,以控制哪些令牌可以访问端点,以及使用配额有多大