防止垃圾评论与机器人的攻击手段如下:

1)IP限制。其原理在于IP难以伪造。即使是对于拨号用户,虽然IP可变,但这也会大大增加共攻击的工作量。
2)验证码。其重点是让验证码难于识别,对于“字母+数字”的验证码,关键在于形变与重叠,增加其破解中切割和字模比对的难度,人眼尚且难以辨识,机器就更难处理了,再者是加大对于验证码的猜测难度。
3)Token和表单欺骗。通过加入隐藏的表单值或者故意对程序混淆表单值
4)审核机制。加大了管理人员的工作量,但理论上可以完全阻止垃圾评论,这是最无奈也是最有效的策略。
 
 
1.IP限制
      HTTP协议是透明的、公开的,服务器端根本无法区分来源是真实的提交还是伪造的。所以通过判断Referer等手段是于事无补的,但是HTTP也有自己的局限。由于HTTP协议是应用层的协议,是基于TCP/IP协议的。
      IP在TCP层传递,其传输需要通过TCP的“三次握手”。这个握手的过程中,有一个校验过程,因此IP是很难伪造的。而HTTP层属于顶层,无法控制IP,所以最简单有效的办法就是对IP进行限制。
      但是,不少代码会判断HTTP头的HTTP_X_FORWARDED是否是代理过来的,若是,则把其记为IP。但是,HTTP_X_FORWARDED来自于HTTP请求中的X Forwareded For报头,而这个报头是可以修改的。这就可能造成潜在的攻击。所以合理的判断是完全不考虑代理,而使用SERVER变量中的HTTP_CLIENT_IP或REMOTE_ADDR。二者难以伪造。出于安全考虑,凡是通过代理过来的请求或者HTTP头中包含XForwareded For报头的,很多程序采取了拒绝的方案。这种处理方式比较简单,误差也比较小。
 
2.Token法
要防止攻击的关键在于加大攻击的难度。最简单的是放一个隐藏可变的Token,每次提交都需要和服务器校对,若通不过,则为外部提交。
下面的代码称为Token法
<?php

define('SECRET','67%$#ap28');
function m_token()
{
$str = mt_rand(1000,9999);
$str2 = dechex($_SERVER['REQUEST_TIME'] - $str);
return $str.substr(md5($str.SECRET), 0, 10).$str2;
} echo m_token();
echo '<br />'; /**
* @param $str
* @param int $delay 表示时间延迟,在不同的程序根据业务来自行修改
*/
function v_token($str,$delay=300)
{
$rs = substr($str, 0, 4);
$middle = substr($str, 0, 14);
$rs2 = substr($str, 14, 8 );
return ($middle == $rs.substr(md5($rs.SECRET), 0, 10)) && ($_SERVER['REQUEST_TIME'] - hexdec($rs2) - $rs<$delay);
} var_dump(v_token(m_token()));
3.验证码
对于预防一些灌水机器人,主要采取验证码一类的措施,包括中文验证码、回答验证,但是对于这两点,专业的灌水机器 人都可以突破。但是对于技术含量不高的,可以直到一定的阻止作用,同时也降低了用户体验。
灌水机器 人通常都会抓取页面的FROM表单,分析必填荐与非必填项,对于必填项构造请求。如果存在普通的图形验证码,则启用图形识别模块、破解验证码、构造完整的数据包。对此可以建立一个INPUT,用CSS或者间接通过JavaScript设其页面为不可见,如果服务器收到的数据包含有这个控件的值,那么肯定是来自机器提交。这样也能起到一定的效果。另外,对INPUT的值进行欺骗对博客的垃圾评论能起到一定的作用
用户名:或者可以做成图片附上机器的学习。
<input type="text" name="email" />实际上代表用户名。
<input type="text" name="url" />实际上是E-mail
<input type="text" name="author" />实际上是URL,而且是隐藏的不能有任何输入的字段。
      在服务器端,如果$_POST['email']匹配的是一个电子邮件地址,那么一定是灌水机器人。如果atuthor字段有值,那么其也一定是灌水机器人。这叫做机器学习欺骗。
同理,可以定期变更action的提交地址,加大灌水机器人的学习难度,也可以把所有数据改为后台审核。
      但是,经过灌水机器 的学习和模型修改,过一段时间必将卷土重来。阻止外部提交一直是个难题。对于表单,因为它是可见的,所以很难阻止机器的猜解和模拟。目前,可行的办法就是使用Active控件。主要是IE Only和技术难度高,大多数的网站无法使用这样的技术,特别是个人站点。
使用JavaScript进行加密验证和平衡图形验证码,可以阻止99%的外部提交。腾讯的大部分产品都使用了这种技术,比如微博和邮箱。
 

WEB安全之垃圾信息防御措施的更多相关文章

  1. Web前端攻击方式及防御措施

    一.XSS [Cross Site Script]跨站脚本攻击 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户 ...

  2. 简单了解:Web前端攻击方式及防御措施

    一.XSS [Cross Site Script]跨站脚本攻击  恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用 ...

  3. web攻击和防御措施

    1.SQL注入:参照下面的链接 http://www.cnblogs.com/chenhaoyu/p/8758888.html 2.跨网站脚本攻击(Cross Site Scripting, XSS) ...

  4. 风炫安全web安全学习第二十九节课 CSRF防御措施

    风炫安全web安全学习第二十九节课 CSRF防御措施 CSRF防御措施 增加token验证 对关键操作增加token验证,token值必须随机,每次都不一样 关于安全的会话管理(SESSION) 不要 ...

  5. C# web服务器被webbench攻击及目现采用的防御措施

    web服务器连续两次出现CPU达到100%的情况,第一次还想着是升级时,哪个地方写错了,有死循环,最后重启了三次服务器才好. 但事后分析代码,没有死循环的可能,于是在第二次又出现CPU达100%时,仔 ...

  6. Web安全之CSRF攻击的防御措施

    Web安全之CSRF攻击的防御措施   CSRF是什么? Cross Site Request Forgery,中文是:跨站点请求伪造. CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击 ...

  7. 风炫安全web安全学习第三十二节课 Python代码执行以及代码防御措施

    风炫安全web安全学习第三十二节课 Python代码执行以及代码防御措施 Python 语言可能发生的命令执行漏洞 内置危险函数 eval和exec函数 eval eval是一个python内置函数, ...

  8. 风炫安全WEB安全学习第二十七节课 XSS的防御措施

    风炫安全WEB安全学习第二十七节课 XSS的防御措施 XSS防御措施 总的原则 控制好输入/输出 过滤:根据业务需求进行过滤,对email,手机号码这样的输入框进行验证. 转义:所有输出到前端的数据都 ...

  9. Mac地址泛洪攻击的防御措施和具体配置

    Mac地址泛洪攻击指的是:利用交换机的mac地址学习机制,攻击者不断地刷新mac地址,填满交换机的mac地址表,以致崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信息. mac地址泛洪攻击的防 ...

随机推荐

  1. Linux下mysql定时自动备份并FTP到远程脚本

    1.添加backupmysqleveryday.sh(vi /data/shell/backupmysqleveryday.sh) #!/bin/sh #this shell is user for ...

  2. mysql的like子句

    直接上例子 查询字段以 php 开头的信息. SELECT * FROM position WHERE name LIKE 'php%'; 查询字段包含 php 的信息. SELECT * FROM ...

  3. 使用pdf.js预览实现读取服务器外部文件

    不知道大家使用百度网盘的文件预览功能,f12看过控制台没有. 发现百度网盘使用的预览文件功能全是基于开源pdf .js的 接下来正题,我们在使用pdf.js默认是读取发布容器内部的文件,读取外部的文件 ...

  4. Android缩放动画[ScaleAnimation]

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...

  5. Convert Spaces to Tabs

    :set tabstop=2 " To match the sample file :set noexpandtab " Use tabs, not spaces :%retab! ...

  6. Astrology PHP 框架

    1.Web 服务器配置 PHP 支持 URL Rewrite.PATH_INFO 2.环境需求 PHP 7.2+ 扩展:gettext 3.目录结构 + src | - autoload.php | ...

  7. asp.net项目配置Web.config,支持JSON

    VS2013新建的web项目不支持直接下载json文件,可以在项目的web.config下插入如下的配置信息. <configuration> <system.web> < ...

  8. <笔记>原生PHP访问TP模板变量

    在模板中,原生PHP可以直接访问模板变量,不过如果模板变量是数组,要访问数组中元素时不能使用"."符号,只能通过数组['元素名']的方式

  9. 点击a标签的文字后页面的跳转

    1.方法一 (1)js var html=""; html+="<a href=\"#\" onclick=\check('"+id+ ...

  10. PMP:10.项目采购管理

    内容中包含 base64string 图片造成字符过多,拒绝显示