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

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. Win7 VS2017编译Godot3.0.2和2.1.4

    千呼万唤屎出来,Godot终于发布3.0版本的源码了,今天是2018年3月17日,自去年接触过后,一直没事就刷刷Gayhub,看看3.0什么时候更新,刷了一年也没结果. 今天上Youtube无意中搜了 ...

  2. 用idea部署maven-web项目

    项目部署时,需要加一步: 我们需要添加一个archetypeCatalog=internal.这个参数的意义是让这个maven项目的骨架不要到远程下载而是本地获取.如果你没加这个参数,那么项目创建可能 ...

  3. DOTween的基本用法

    首先声明一点,不要简单的认为 DOTween 只能用在 Transform 组件上完成一些简单的动画,或者是完成一些 UI 动画,DOTween 的用途是很广的,unity中有很多组件都可以使用 DO ...

  4. How Does Closure Work in Javascript?

    Simply, closure is the scope that it can visite and operate the variables outside of the function wh ...

  5. flask-钩子函数&g对象

    常用钩子函数 在Flask中钩子函数是使用特定的装饰器装饰的函数.钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码.那么这种函数就叫做钩子函数.(hook) before_first_req ...

  6. Spring注解使用注意点

    1 @RestController @Controller  @RestController注解相当于@ResponseBody + @Controller合在一起的作用.  如果只是使用@RestC ...

  7. el表达式与<c:foreach>标签的联合各种使用方法记录

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ tagl ...

  8. pwnable.kr详细通关秘籍(二)

    i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...

  9. 基于HTTP的长轮询简单实现

    Web客户端与服务器之间基于Ajax(http)的常用通信方式,分为短连接与长轮询. 短连接:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接. 在长轮询机制中,客户端像传统轮 ...

  10. Python学习笔记【第九篇】:Python面向对象基础

    Python语言中一切皆对象(类.属性.方法.........) 概念 面向对象编程:Object Oriented Programming 简称OOP 面向对象程序设计 面向对象和面向过程都是解决问 ...