如何防止用户自动发帖/垃圾邮件?
这是我的方式,为每个页面请求新的php会话,它有自己的限制,没有multitabing.
我为每个页面使用了新会话来防御CSRF和自动攻击.让我们说我们有论坛使用AJAX发布线程,并由PHP SESSION验证.
add_answer.php?ID = 123
<?php
if(!is_ajax()){// function that determines whether the request is from ajax (http header stuff)
$_SESSION['token'] = md5(rand());
}
//some ajax request to ajax.php?id=123
?>
Run Code Online (Sandbox Code Playgroud)
ajax.php?ID = 123
<?php
if($_SESSION['token'] == $_GET['token']){
echo 'MYSQL INSERT stuff';
}else{
echo 'Invalid Request';
}
?>
Run Code Online (Sandbox Code Playgroud)
一切正常,直到用户在另一个选项卡上打开page.php?id = 456,ajax在ajax.php上返回'invalid request'?id = 123 这与我问的另一个问题有关.他们建议一直只使用一个会话哈希,直到他/她注销 - 只有会话重新生成.如果令牌是相同的,则USER可以简单地绕过它并执行自动攻击.有什么想法吗?
无论如何,你是如何防止自动AJAX攻击的?
PS: