社区帖子anti-spam综述

搞了anti-spam之后,发现原来杀毒软件的原理也是类似的,浏览器的AdBlock插件原理也是类似的.

  • 目的

    垃圾是不可能根绝的,就跟犯罪不可能根绝一样.所以anti-spam的目的,就是提高攻击成本,降低防御成本.攻击者的目的无非就是牟利,当他们成本太高的时候,就会降低攻击力度.

  • 攻击者的智慧
    • 人肉打码:绕过验证码
    • 淘宝"注册账号交易"
    • 代收短信业务/代收邮件业务:绕过手机动态口令验证和邮件激活
    • 新帖秒回
    • 逆向app获取密钥
    • 机器刷接口
    • 伪造ip

      通过修改http header的x-forward-for来伪造ip

  • 检测手段
    • 内容

      • 敏感词过滤(用AC自动机进行多模匹配)
      • 相似度过滤
        • 文本相似度(shingle算法)
        • 图片相似度(ahash/dhash/phash)
      • 垃圾帖子的内容中一般有联系方式如url/手机号/qq号/微信号等.
    • 行为
      • 没查看就回复帖子
      • 发帖太频繁
      • 频繁变ip
      • 频繁清空cookie
      • 注册账号使用类似的email/用户名,比如akjlhiol/akjihlol等.
    • 属性
      • 注册时间
      • 用户等级
      • vip
      • 小编账号
  • 防御手段
    • 验证码

      • 注册登录要验证码
      • 异地要验证码
      • 发帖频率过快要验证码
    • 加cd时间
    • 等级制度
    • 黑名单
    • 工作量证明

      比特币挖矿这么耗电,其中一个原因就是工作量证明.原理就是利用工作者(客户端)和验证者(服务端)工作量的不一致.比如我们让用户在某些敏感请求前做10w次的md5运算,对于正常用户来说这点不算什么,对攻击者批量发请求来说,就是一个很大的负担了.具体做法可以是,验证者给定一个随机字符串s,工作者必须找出一个数n,使得随机字符串拼上这个数n后的md5结果前面几位都是0.即md5(s+n)的结果符合验证者的要求.工作者只能不停的穷举,找出这样一个数n.而验证方只需要拿工作方给过来的n,进行一次md5即可验证.即if
      md5(msg+str(n)).hexdigest()[:4] == ‘0000‘.

    • 签名参数sig

      客户端对请求的内容进行签名(生成一个hash值),服务端验证签名.需要对客户端代码进行混淆,而且尽量不采用开源的混淆算法.

    • 烟雾弹

      比如用户发一个垃圾帖,我们如果直接删帖,攻击者马上就知道了,他就会寻找其它策略.但是如果我们放烟雾弹,让他的请求无效,但是还返回"成功",或者删了帖,那个帖子只有发布者自己能看到,其它人看不到,发布者就会以为发的帖子没被删.

    • 钓鱼

      让客户端增加一个无关紧要的参数,攻击者不会马上知道,还傻傻的按照以前的请求参数发送,因为我们知道没有这个参数的客户端不是正常的客户端,于是我们可以从这个时间起收集这些攻击者的账号id,等收集的差不多的时候就扫荡封杀掉.

  • 惩罚级别
    • 禁言
    • 删号
时间: 2024-10-11 13:07:17

社区帖子anti-spam综述的相关文章

【DDD】业务建模实践 —— 发布帖子

本文是基于上一篇‘业务建模小招数’的实践,主要讲解‘发表帖子’场景的业务建模,包括:业务建模.业务模型.示例代码:示例代码会使用java编写,文末附有github地址.相比于<领域驱动设计>原书中的航运系统例子,社交服务系统的业务场景对于大家更加熟悉,相信更好理解.本文是[DDD]系列文章的第一篇,可参考:通过业务系统的重构实践DDD Round-I 业务建模 在大家的常识中,每个人都有自己的观点,并可以发表自己的观点,在社区中便表现为:发布帖子.那么谁发布帖子呢? 很明显是帖子作者,于是我们

NSURLErrorDomain Code=-1002 “unsupported URL”

我这儿是实现社区帖子搜索功能时候出现的,发送的GET请求,其中的URL中包含搜索的关键字以及用户的其他信息 搜索不出结果,但是链接可以在浏览器中打开 出错首先在控制台打印的错误信息,打印如下: Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" 我首先在网上看了一些博客,但尝试后无果我的问题,最后我回到起点慢慢找,我发现自己请求的串中包含有中文字符,最后解决方案是把其中的一个含有中文字符的参数q对应的text进行编码 [

网站后端_Python+Flask.0006.FLASK地址转换之默认转换与自定义转换?

动态规则: 说明: URL规则可添加变量部分,也就是说将符合同种规则的URL抽象成一个URL模式 @app.route('/instance/<uuid>/') def instance(uuid):     return 'Instance: {}'.format(uuid) 注意: 尖括号中内容是动态的,凡是匹配到/instance/前缀的都会被映射到这个路由上,在内部把uuid作为参数而获得,默认类型为字符串 默认转换: 说明: 可通过<converter:variable_nam

网址规范化优化全面大解析

什么是网址规范化?做SEO的朋友们应该都比较清楚,指的是搜索引擎挑选最合适的URL作为真正(规范化的)网址的过程. 一.首先,为什么会出现不规范网址? http://365daohang.com http://www.365daohang.com http://365daohang.com/index.html http://www.365daohang.com/index.html 上面这几个URL指的是同一个文件:首页 从技术上来说,这几个URL都是不同的网址,搜索引擎也确实把他当作不同的网

[转自itilxf论坛]iTop百问百答

iTop是什么,和其他itsm软件相比有什么优势?iTop,是一个开源web应用程序,用于IT环境的日常运营.它基于ITIL最佳实践,而又不拘泥于任何具体流程. 优势: 1. 开源,扩展性强容易开发. 2. 理念.强调以人为本的IT运维和运营的管理:3. 工具.用户操作智能化,提高工具使用效率: 4. 扩展性.丰富的集成接口和定制功能,提升工具随需而变的能力: 5. 合规性.遵循ITIL最佳实践.国际通行的ISO20000标准: 6.CMDB核心.提供强大的CMDB模块,动态生成CI关系拓扑图:

linux查找系统中占用磁盘空间最大的文件

Q:下午有一客户磁盘空间占用很大,使用df查看磁盘剩余空间很小了,客户想知道是哪些文件占满了文件. Q1:在Linux下如何查看系统占用磁盘空间最大的文件? Q2:在Linux下如何让文件夹下的文件让文件按大小排序? A: 不知您是否遇到过这样的问题,服务器上架没多长时间磁盘怎么装满了. 分析:大多是由于日志没有轮滚,可以使用脚本或logrotate将日志定期备份删除或直接关闭不需要的日志记录功能.51开源社区帖子有相关各种服务器日志的处理方法.接下来你会想起来去apache和mysql或其他应

MTA---smtp(25,postfix,sendmail),Pop3(110,Devocot), MUA(foxmail) IMAP(server,client rsync)

利用telnet进行SMTP的验证 =========先计算BASE64编码的用户名密码,认证登录需要用到=========== [[email protected] crazywill]$ perl -MMIME::Base64 -e 'print encode_base64("crazywill");' Y3Jhenl3aWxs [[email protected] crazywill]$ perl -MMIME::Base64 -e 'print encode_base64(&q

转 What is Redis and what do I use it for?

原文: http://stackoverflow.com/questions/7888880/what-is-redis-and-what-do-i-use-it-for Redis = Remote Dictionary Service TL;DR: If you can map a use case to Redis and discover you aren't at risk of running out of RAM by using Redis there is a good cha

走在技术的长征路上 1:叩首问路 码梦为生

曾经在coursera上<用weka来进行数据挖掘>这门课时,授课老师怀卡托大学的Ian H. Witten给我很大的触动,对我产生了很大的影响,我想就从Ian教授谈起 ? [一个可爱的老头] ? 这是一个很有趣的老头,每次上课的时候都能看到他很乐观开心的笑脸,不得不由衷的感叹,他真的是很热爱这份工作啊.人只有在做他热爱的事情的时候才能流露出如此幸福的表情,所以我很喜欢上他的课,有时候就仅仅是想见到这个可爱的老头.因为他的原因,我把自己qq的头像也改为了Ian witten,我也想成为他那样的