在Javascript中防止AJAX泛滥

Kyl*_*cey 3 javascript security ajax ddos

我的网站有一个Javascript方法,该方法使AJAX请求将项目添加到购物车而无需重新加载页面并进行简单通知.

 AddToCart()
Run Code Online (Sandbox Code Playgroud)

但是,使用任何Javascript控制台,我发现您可以通过一个简单的声明来泛滥此请求:

while (true) {AddToCart()}
Run Code Online (Sandbox Code Playgroud)

并最终锁定服务器,直到浏览器崩溃.更稳定的浏览环境甚至可能无限期地锁定服务器.那么防止这种尝试的最佳方法是什么呢?

med*_*iev 6

也许你应该只在私有命名空间中定义函数?

(function() {
   function AddtoCart(){};
})();
Run Code Online (Sandbox Code Playgroud)

这样你就无法通过控制台引用它.

这当然不是防弹的,因为任何人都可以复制代码或向URI发出HTTP请求.

您无法停止HTTP请求,但您可以通过实施CSRF令牌来停止页面处理数据,这样除非CSRF令牌匹配,否则它不会执行繁重的处理,这是从您的页面生成的,该页面根据变量创建CSRF像时间戳等,所以它不能(轻松?)再现.