我有一个页面会在用户共享帖子后向服务器发出ajax请求以增加值:
FB.ui({
method: 'feed',
name: 'Share',
link: 'http://{{ request.META.HTTP_HOST }}{% url "facebook_competition" %}',
}, function(response){
if (response && response.post_id) {
$.post('http://mysite.net/shared/', {post_id:response.post_id});
}
});
我的网站受CSRF令牌保护,如下所示:
jQuery(document).ajaxSend(function(event, xhr, settings) {
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
var csrftoken = $('meta[name="csrf-token"]').attr('content');
//var csrftoken = $.cookie('csrftoken');
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
})
但是如何有效地阻止用户加载页面然后在控制台中触发ajax请求,例如:
for (var i=0; i<100; i++){
$.post('http://mysite.net/shared/', {post_id:1234});
}
我考虑过IP,频率检查等,但它们效率很低。
答案 0 :(得分:0)
可能没有很多东西可以完全阻止它,但你可以结合你试图使它变得更加困难的方法。最终,您可以考虑生成一些独特的,一次性使用的令牌,每次刷新都应与共享操作的post_id一起发布,这样您的用户就必须重新加载您的页面才能再次更新您的计数器。 / p>
此外,(可能很明显)如果您的用户不是匿名用户,您可以忽略他们已经造成一个人的反增量。