信息过滤与反垃圾

我国的信息过滤技术是走在世界前列的,尽管如此,在各种社区网站和个人邮箱中,广告和垃圾信息仍然屡见不鲜、泛滥成灾。
常用的信息过滤与反垃圾手段有以下几种。

文本匹配

文本匹配主要解决敏感词过滤的问题。通常网站维护一份敏感词列表,如果用户发表的信息含有列表中的敏感词,则进行消毒处理(将敏感转义为***)或拒绝发表。
那么如何快速的判断用户信息是否含有敏感词呢?如果敏感词比较少,用户提交信息文本长度也较短,可直接使用正则表达式匹配。但是正则表达式的效率一般较差,当敏感词很多,用户发布的信息也很长,网站并发量较高时,就需要更合适的方法来完成,这方面公开的算法有很多,基本上都是Trie树的变种,空间和时间复杂度都比较好的有双数组Trie算法等。
Trie算法的本质是确定一个有限状态自动机,根据输入数据进行状态转移。双数组Trie算法优化了Trie算法,利用两个系数数组存储树结构,base数组存储Trie树的节点,check数组进行状态检查。双数组Trie树需要根据业务场景和经验确定数组大小,避免数组过大或者冲突过多。
另一种更简单的的实现是通过构造多级Hash表进行文本匹配。假设敏感词表包含敏感词:阿拉伯、阿富汗、阿油、北京、北大荒、北风。那么可以构造如下图所示的过滤树,用户提交的信息逐字顺序在过滤树中匹配。过滤树的分支可能会比较多,为了提高匹配速度,减少不必要的查找,同一层中相同父节点的字可以放在Hash表中。该方案处理速度较快,稍加变形,即可适应各种过滤场景,缺点是使用Hash表会浪费部分内存空间,如果网站敏感词数量不多,浪费部分内存还是可以接受的。


有时候,为了绕过敏感词检查,某些输入信息会被做一些手脚,如“阿_拉_伯”,这时候还需要对信息做降噪预处理,然后再进行匹配。

分类算法

早期网站识别垃圾信息的主要手段是人工方式,后台运营人员对信息进行人工审核。对大型网站而言,特别是以社交为主的Web2.0网站,如Facebook或Linkedin这样的网站,每天用户提交的信息数千万计,许多垃圾信息混杂其中,影响用户体验;而对于B2B类的电子商务交易撮合网站,用户主要通过站内信等手段进行商品信息咨询,有时候站内信充斥大量广告,甚至淹没正常询盘,引起用户不满和投诉。
对如此海量的信息进行人工审核是不现实的,对广告贴、垃圾邮件等内容识别比较好的自动化方法是采用分类算法。
以反垃圾邮件为例说明分类算法的使用,如下图所示。先将批量已分类的邮件样本(如50000封正常邮件,2000封垃圾邮件)输入分类算法进行训练,得到一个垃圾邮件分类模型,然后利用分类算法结合分类模型对待处理邮件进行识别。

比较简单实用的分类算法有贝叶斯分类算法,这是一种利用概率统计方法进行分类的算法。贝叶斯算法解决概率论中的一个典型问题:一号箱子放有红色球和白色球各20个,二号箱子放有白色球10个,红色球30个,现在随机挑选一个箱子,取出来一个球的颜色是红色的,请问这个球来自一号箱子的概率是多少。
利用贝叶斯算法进行垃圾邮件的识别基于同样原理,根据已分类的样本信息获得一组特征值的概率,如“茶叶”这个词出现在垃圾邮件中的概率为20%,出现在非垃圾邮件中的概率为1%,就得到分类模型。然后对待处理邮件提取特征值,比如取到了茶叶这一个特征值,结合分类模型,就可以判断其分类。贝叶斯算法得到的分类判断是一个概率值,因此会存在误判(非垃圾邮件判为垃圾邮件)和漏判(垃圾邮件判为非垃圾邮件)。
贝叶斯算法认为特征值之间是独立的,所以也被称作是朴素贝叶斯算法(Native Bayes),这个假设很多时候是不成立的,特征值之间具有关联性,通过对朴素贝叶斯算法增加特征值的关联依赖处理,得到TAN算法。更进一步,通过对关联规则的聚类挖掘,得到更强大的算法,如ARCS算法(Association Rule Clustering System)等。但是由于贝叶斯分类算法简单,处理速度快,仍是许多实时在线系统反垃圾的首选。
分类算法除了用于反垃圾,还可用于信息自动分类,门户网站可用该算法对采集来的新闻稿件进行自动分类,分发到不同的频道。邮箱服务商根据邮件内容推送的个性化广告可以使用分类算法提高投送相关度。

黑名单

对于垃圾邮件,除了用分类算法进行内容分类识别,还可以使用黑名单技术,将被报告的垃圾邮箱地址放入黑名单,然后针对邮件的发件人在黑名单列表中查找,如果查找成功,则过滤该邮件。
黑名单也用于信息去重,如将文章标题或者文章关键段落记录在黑名单中,以减少搜索引擎收录重复信息等用途。
黑名单可以通过Hash表实现,该方法实现简单,时间复杂度小,满足一般场景使用。但是当黑名单列表非常大时,Hash表需要占据极大的内存空间。例如在需要处理10亿个黑名单邮件地址列表的场景下,每个邮件地址需要8个字节的信息指纹,即需要8GB内存,为了减少Hash冲突,还需要一定的Hash空间冗余,加入空间利用率为50%,则需要16GB的内存空间。随着列表的不断增大,一般服务器将不可承受这样的内存需求。而且列表越大,Hash冲突越多,检索速度越慢。
在对过滤需求要求不完全精确的场景下,可用布隆过滤器代替Hash表。布隆过滤器使用他的发明者巴顿·布隆的名字命名的,通过一个二进制列表和一组随机数映射函数实现,如下图所示。

仍以需要处理10亿邮件地址黑名单列表为例,在内存中建立一个2GB大小的存储空间,即16GB个二进制bit,并全部初始化为0。要将一个邮箱地址加入黑名单时,使用8个随机映射函数(F1,F2,...,F8)得到0~16GB范围内的8个随机数,从而将该邮箱地址映射到16GB二进制存储空间的8个位置上,然后将这些位置置为1。当要检查一个邮箱地址是否在黑名单中时,使用同样的映射函数,得到16GB空间8个位置上的bit,如果这些值都为1,那么该邮箱地址在黑名单。
可以看到,处理同样数量的信息,布隆过滤器只使用hash表所需内存的1/8.但是布隆过滤器有可能导致系统误判(布隆过滤器检查在黑名单中,但实际却并未放入过)。因为一个邮箱地址映射的8个bit可能正好都被其他邮箱地址设为1了,这种可能性极小,通常在系统可接受范围内。但如果需要精确的判断,则不适合使用布隆过滤器。

电子商务风险控制

电子商务网站在给人们带来购物交易的极大便利的同时,也将风险带给了对网络安全一无所知的人们。由于买卖双方的信息不对等,交易本来就存在风险,而当交易在网上发生时,买卖双方彼此一无所知,交易风险也就更加难以控制。如果一个电商网站骗子横行,诚信的交易屡屡受骗,那么网站就到了最危险的时候,可以说,交易安全是电子商务网站的底线。

风险

电子商务具有多种形式,B2B、B2C、C2C每种交易的场景都不相同,风险也各有特点,大致可分为以下几种。

  • 账户风险:包括账户被黑客盗用,恶意注册账号等几种情形。
  • 买家风险:买家恶意下单占用库存进行不正当竞争;黄牛利用促销抢购低价商品;此外还有良品拒收,欺诈退款及常见于B2B交易的虚假询盘等。
  • 卖家风险:不良卖家进行恶意欺诈的行为,例如货不对板、虚假发货、炒作信用等,此外还有出售违禁商品、侵权产品等。
  • 交易风险:信用卡盗刷、支付欺诈、洗钱套现等。

风控

大型电商网站都配备有专门的风控团队进行风险控制,风控的手段也包括自动和人工两种。机器自动识别为高风险的交易和信息会发送给风控审核人员进行人供审核,机器自动风控的技术和方法也不断通过人工发现的新风险类型进行逐步完善。
机器自动风控的技术手段主要有规则引擎和统计模型。

规则引擎

当交易的某些指标满足一定条件时,就会被认为具有高风险的欺诈可能性。比如用户来自欺诈高发地区;交易金额超过某个数值;和上次登录的地址距离差距很大;用户登录地与收货地不符;用户第一次交易等等。
大型网站在运营过程中,结合业界的最新发现,会总结出数以千计的此类高风险交易规则。一种方案是在业务逻辑中通过编程方式使用if...else...代码实现这些规则,可想而知,这些代码会非常庞大,而且由于运营过程中不断发现新的交易风险类型,需要不断调整规则,代码也需要不断修改...
网站一般使用规则引擎技术处理此类问题。规则引擎是一种将业务规则和规则处理逻辑相分离的技术,业务规则文件由运营人员通过管理界面编译,当需要修改规则时,无需更改代码发布程序,即可实时使用新规则。而规则处理逻辑则调用规则处理输入的数据,如下图所示。

统计模型

规则引擎虽然技术简单,但是随着规则的逐渐增加,会出现规则冲突,难以维护等情况,而且规则越多,性能也越差。目前大型网站更倾向于使用统计模型进行风控。风控领域使用的统计模型使用前面提到的分类算法或者更复杂的机器学习算法进行智能统计。如下图所示。根据历史交易中的欺诈交易信息训练分类算法,然后将经过采集加工后的交易信息输入分类算法,即可得到交易风险分值。


经过充分训练后的统计模型,准确率不低于规则引擎。分类算法的实时计算性能更好一些,由于统计模型使用模糊识别,并不精确匹配欺诈规则,因此对新出现的交易欺诈还具有一定预测性。

架构:安全架构——信息过滤与反垃圾、风险控制。相关推荐

  1. 继续摘抄:postfix最新源码病毒过滤和反垃圾实战篇

    四. 整体调试 0. 开启dns服务:service named start    开启apache:/etc/init.d/apachectl start    开启mysql:/etc/init. ...

  2. 浅谈web架构之架构设计(总结)

    架构模式 先来说说模式: 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地用该方案而不必做重复工作 . 先来说说常见的网站架构模式.这里没有涉及具体实现 ...

  3. auxprop mysql_Postfix 反垃圾过滤

    MTA的反垃圾邮件功能,实际上就是在MTA处理过程中对会话进行过滤.这个过滤不但过滤了发往自身的垃圾邮件,而且还防止了自身被恶意利用发送垃圾邮件.Postfix实现了目前所有主要的MTA过滤技术.. ...

  4. 基于自然语言处理的垃圾信息过滤方法

                            基于自然语言处理的垃圾信息过滤方法 Spam Filtering Method Based on Natural Language Processing ...

  5. U-Mail反垃圾邮件网关过滤Locky勒索邮件

    近期,不少朋友圈有朋友发布相关的邮件提醒,说有关于Locky病毒勒索邮件的.看来这个病毒影响不小啊!下面就说说怎么来防止Locky勒索病毒的侵扰. 什么是Locky勒索病毒 Locky勒索病毒主要以邮 ...

  6. 基于飞书组织架构和用户信息同步构建本地LDAP服务

    目前飞书社交办公应用成为公司日常沟通办公的协作工具,以及作为各种流程的审批处理系统,HR 也会在飞书上去管理所有员工的状态及组织架构. 随着公司内新部署的业务系统越来越多,例如Jenkins.JIRA ...

  7. 同步钉钉组织架构和人员信息到本地Ldap

    最近新系统需要打通人员的组织结构和账号信息,A系统自建的用户体系而B系统是使用的Ldap账号体系,目前要整合账号体系把钉钉的人员组织架构同步到Ldap中,相关的内部系统都是基于OpenLdap进行身份 ...

  8. U-Mail反垃圾邮件网关有效过滤病毒/垃圾邮件

    电子邮件目前已广泛应用于人们的日常生活和工作当中,成为了当下人们不可或缺的.最普遍的交流方式.但是,随着人们对电子邮件的越发依赖,垃圾邮件造成的影响也日趋严重,除传统的垃圾广告邮件外,更具威胁的是黑客 ...

  9. 无符号数的算术四则运算中的各类单词的识别_文本反垃圾在花椒直播中的应用概述...

    奇技指南 本文主要以文本为对象,简要地介绍花椒平台在文本反垃圾方面所采用的文本垃圾拦截技术 本文转载自花椒技术公众号 背景 随着花椒用户和主播用户的数量不断增加,一些非法用户(垃圾虫)利用花椒平台数据 ...

最新文章

  1. 知乎热议:28岁郭宇期权过亿,彪悍从字节退休,旅居日本开温泉酒店
  2. 倚天·屠龙——唯我独尊
  3. v-bind 中a标签的使用
  4. 聚焦CSDN技术主题月:深度学习框架的重构与思考专场回顾
  5. Bug使用swoole找不到引用类
  6. oracle查询使用or,查询视图,使用or就用不上索引
  7. oracle客户端没有deinstall.bat,Oracle数据库11gR2的卸载 - deinstall
  8. html5写入唯一标识,id - 唯一标识符 - html5全局属性
  9. mysql免安装如何改密码_mysql免安装版配置与修改密码的教程
  10. CSM中一些常见问题的解决方式
  11. EntityFramework使用及优化
  12. linux7 多路径配置,redhat7.3多路径配置
  13. c语言中代码中的作用,C语言中#的神奇作用
  14. Redisson分布式锁使用采坑记
  15. Ubuntu系统设置截图快捷键
  16. 【转】SpringMVC的工作原理图
  17. lesson14 Do you speak english? 你会说英语吗?-ask for VS ask sb to do -过去完成时-neither of, both, either of
  18. Dubbo 正式支持 Spring 6 Spring Boot 3
  19. 马达驱动 DRV8832
  20. 2021年中国环保产业相关政策法规及行业标准分析[图]

热门文章

  1. Python爬虫圈最能打的专栏教程,《Python爬虫120例》教程导航帖(2023.2.6更新)
  2. OBCA认证知识点-part4
  3. java 验证码突然不显示
  4. 如何正确高效使用搜索引擎
  5. element UI 模态层dialog自定义大小
  6. 抖音seo源码·源代码搭建·支持二开(开源)系统
  7. MPU6050的原理讲解
  8. PID 控制器代码实现
  9. ubuntu 网卡流量_详解Linux查看实时网卡流量的几种方式
  10. response.getWriter()的作用