可编辑javascript和Ajax
我有一个非jQuery 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
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-您可以构建一个非常简单的后台办公室供自己使用,以控制哪些令牌可以访问端点,以及使用配额有多大