敏感词

网站敏感词过滤的实现(附敏感词库)

a 夏天 提交于 2020-03-04 09:58:44
现在基本上所有的网站都需要设置敏感词过滤,似乎已经成了一个网站的标配,如果你的网站没有,或者你没有做相应的处理,那么小心相关部门请你喝茶哦。 最近在调研Java web网站的敏感词过滤的实现,网上找了相关资料,经过我的验证,把我的调研结果写出来,供大家参考。 一、敏感词过滤工具类 把敏感词词库内容加载到ArrayList集合中,通过双层循环,查找与敏感词列表相匹配的字符串,如果找到以*号替换,最终得到替换后的字符串。 此种方式匹配度较高,匹配速度良好。 初始化敏感词库: //初始化敏感词库 public void InitializationWork ( ) { replaceAll = new StringBuilder ( replceSize ) ; for ( int x = 0 ; x < replceSize ; x ++ ) { replaceAll . append ( replceStr ) ; } //加载词库 arrayList = new ArrayList < String > ( ) ; InputStreamReader read = null ; BufferedReader bufferedReader = null ; try { read = new InputStreamReader ( SensitiveWord . class .

上架包预检

感情迁移 提交于 2020-03-03 22:13:37
一、 iOS 端常见被拒原因汇总 App 内包含分发下载分发功能(引导用户下载 App 等功能)。 提供的测试账号无法查看实际功能 通过接口返回布尔值判断 App 是否升级,但审核期间该接口不请求 审核账号,任何时候在任何 ip 登录看到的都是审核版。 提供的登陆账号和密码不对,登陆不上 运营填写的营销关键字有问题 元数据问题,iPhoneX 截图中 iPhone 壳子是 iPhone7 的,应该是 iPhoneX 说明隐私权限的作用。 营销文字,某些能力需要资质。此类功能在审核期间都关闭 修改隐私权限相关的文案,做到让审核人员看得懂,做到「信达雅」 App 无法登陆进去,属于 bug 级别 App 没有适配 ipad。 Privacy - Data Collection and Storage,说明 App 没有做隐私权限的收集。 访问 h5 页面出现问题。 属于 bug 级别 App 集成了设备指纹 SDK, 会上传用户设备安装应用列表。 解决:移除设备指纹SDK, 成功上架 二、 App 被拒原因汇总 从 Android 和 iOS 2端 App 被驳回的一些信息来看,驳回原因一般划分为下面几类: 审核期间,资源和配置都应该调节为审核模式 App 包含某些关键字 审核相关的元数据问题(截图与实际内容不匹配、机型和截图不匹配、提供给审核的账号和密码登陆不上)

即时聊天软件,需要有个安全的新选择

…衆ロ難τιáo~ 提交于 2020-02-26 12:33:24
在这个信息化飞速发展的时代里,信息互联互通,网络安全已经成为一个整体,信息泄露导致的后果,决不仅仅是损害个人的生命和财产安全。企达LongChat即时通讯软件内置多种安全机制,包括角色权限、分支隐藏、数据水印、敏感词过滤等。 敏感词过滤 客户端会根据后台导入的敏感词,进行监测并禁止发送敏感词,同时支持敏感词过滤及过滤规则的智能配置。 背景水印 企达LongChat的客户端消息界面与组织架构界面,都可以通过LongChat的管理后台打开水印功能,水印功能的开启,可以使得企业敏感数据(消息、组织架构)的扩散得到有效控制。 分支隐藏 通过分支隐藏功能,可以实现不同的帐号进入系统后,可以看到不同的组织架构树内容,从而针对不同的帐号,隐藏敏感的组织架构信息,确保用户的组织信息的安全。 角色权限 LongChat系统通过角色权限设定,根据实际情况赋予帐号所对应的系统管理能力,使得LongChat的系统管理达到有序安全。 来源: oschina 链接: https://my.oschina.net/u/4249918/blog/3160073

怎么设计高效的敏感词过滤系统(一)

落花浮王杯 提交于 2020-02-24 21:16:00
IM项目需要对上边传输的消息进行必要的过滤。如果总是对着某人输入f**k就显得不太文明了。 一个通用且简单的做法是,设定一批敏感词,如果消息中出现这些词,由系统进行必要的处理。怎么实现这个功能呢? 一、能够实现敏感词过滤功能的方法有很多 方法有很多,我简单罗列了几个。 1、直接将敏感词组织成String后,利用indexOf方法来查询。 2、传统的敏感词入库后SQL查询。 3、利用Lucene建立分词索引来查询。 4、利用DFA算法来进行。 显然,方法1和方法2在性能上基本无法满足IM系统高效处理消息的需求,放弃。 方法3,采用Lucene建立本地分词索引,将消息内容分词后,在索引库里搜索。这个方法较复杂,且分词效率也不会很高,放弃。 大多数的敏感词过滤系统采用的是方法4,DFA算法。 二、DFA简介 DFA是什么?这里有必要简单介绍一下这个概念(这部分看不懂没关系,可以跳过)。 1、DFA定义 DFA翻译成中文是“确定有穷自动机 ” 定义:一个确定有穷自动机(DFA)M是一个五元组:M=(K,Σ,f,S,Z)其中 ① K是一个有穷集,它的每个元素称为一个状态; ② Σ是一个有穷字母表,它的每个元素称为一个输入符号,所以也称Σ为输入符号字母表; ③ f是转换函数,是K×Σ→K上的映射(且可以是部分函数),即,如 f(ki,a)=kj,(ki∈K,kj∈K)就意味着,当前状态为ki

java快速实现敏感词屏蔽

心不动则不痛 提交于 2020-02-08 10:21:59
java快速实现敏感词屏蔽 先要有个敏感词词库,百度搜索一下就找得到。我的词库是txt文件sensitive-words.txt,把它放到类路径下即可。 这里稍作展示,没有在开车: 新建一个处理工具类,包括处理词汇和读入txt文件。 package com . ge . config ; import java . io . BufferedReader ; import java . io . FileInputStream ; import java . io . IOException ; import java . io . InputStream ; import java . io . InputStreamReader ; public class SensitiveWordsUtil { /** * 敏感词转化为字符串数组 */ public static final String [ ] str = readFile ( ) . split ( "," ) ; /** * 敏感词库路径 */ public static final String pathname = "src\\main\\resources\\sensitive-words.txt" ; /** * @Description 将敏感词全部替换为等长度的"*"号。 */ public static

[原创] Trie树 php 实现敏感词过滤

女生的网名这么多〃 提交于 2020-02-02 06:33:44
目录 背景 简介 存储结构 PHP 其他语言 字符串分割 示例代码 php 优化 缓存字典树 常驻服务 参考文章 背景 项目中需要过滤用户发送的聊天文本, 由于敏感词有将近2W条, 如果用 str_replace 来处理会炸掉的. 网上了解了一下, 在性能要求不高的情况下, 可以自行构造 Trie树(字典树), 这就是本文的由来. 简介 Trie树是一种搜索树, 也叫字典树、单词查找树. DFA可以理解为DFA(Deterministic Finite Automaton), 即 这里借用一张图来解释Trie树的结构: Trie可以理解为确定有限状态自动机,即DFA。在Trie树中,每个节点表示一个状态,每条边表示一个字符,从根节点到叶子节点经过的边即表示一个词条。查找一个词条最多耗费的时间只受词条长度影响,因此Trie的查找性能是很高的,跟哈希算法的性能相当。 上面实际保存了 abcd abd b bcd efg hij 特点: 所有词条的公共前缀只存储一份 只需遍历一次待检测文本 查找消耗时间只跟待检测文本长度有关, 跟字典大小无关 存储结构 PHP 在PHP中, 可以很方便地使用数组来存储树形结构, 以以下敏感词字典为例: 大傻子 大傻 傻子 ↑ 内容纯粹是为了举例...游戏聊天日常屏蔽内容 则存储结构为 { "大": { "傻": { "end": true "子": {

转,敏感词过滤,PHP实现的Trie树

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-02 05:04:49
原文地址: http://blog.11034.org/2012-07/trie_in_php.html 项目需求,要做敏感词过滤,对于敏感词本身就是一个CRUD的模块很简单,比较麻烦的就是对各种输入的敏感词检测了。用Trie树来实现是比较通用的一种办法吧,之前一直没机会用过这种数据结构,正好试着写了一下。 因为用PHP实现,关联数组用的很舒服。第一个要解决的是字符集的问题,如果在Java中就比较好办统一的Unicode,在PHP中因为常用 UTF-8字符集,默认有1-4个字节不同的长度来表示一个字符,于是写了个Util类来将普通的UTF-8字符串转换成字符数组,每一个元素是一个 UTF-8串形成的字符。这一点比较容易实现的,根据UTF-8字符集的格式而来就好。 public static function get_chars($utf8_str){ $s = $utf8_str; $len = strlen($s); if($len == 0) return array(); $chars = array(); for($i = 0;$i < $len;$i++){ $c = $s[$i]; $n = ord($c); if(($n >> 7) == 0){ //0xxx xxxx, asci, single $chars[] = $c; } else if(($n >> 4)

Python每日练习之敏感词过滤器

老子叫甜甜 提交于 2020-01-21 09:46:15
题目传送口: https://github.com/Yixiaohan/show-me-the-code 第 0011 题: 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights。 第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。 题目修改整合: 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,然后使用星号*替换,直到替换替换全部敏感词,打印出 Human Rights。 北京 程序员 公务员 领导 牛比 牛逼 你娘 你妈 love sex jiangge 当用户输入「北京是个好城市,你娘的从程序员刻苦干活,现在当了领导,也变的厉害起来了。真的是很牛逼啊!」,则变成「*是个好城市,*的从*刻苦干活,现在当了*,也变的厉害起来了。真的是很*啊!」。 参考代码如下: import re def read_txt(file): #打开敏感词文本并拿出敏感词 with open(file) as f: data = f.read() list_data

java 实现敏感词(sensitive word)工具详解使用说明

余生长醉 提交于 2020-01-15 01:13:59
sensitive-word 平时工作中,只要涉及到用户可以自由发言(博客、文档、论坛),就要考虑内容的敏感性处理。 sensitive-word 基于 DFA 算法实现的高性能敏感词工具。工具使用 java 实现,帮助我们解决常见的问题。 特性 6W+ 词库,且不断优化更新 基于 DFA 算法,性能较好 基于 fluent-api 实现,使用优雅简洁 支持敏感词的判断、返回、脱敏等常见操作 支持全角半角互换 支持英文大小写互换 快速开始 准备 JDK1.7+ Maven 3.x+ Maven 引入 <dependency> <groupId>com.github.houbb</groupId> <artifactId>sensitive-word</artifactId> <version>0.0.4</version> </dependency> api 概览 SensitiveWordBs 作为敏感词的引导类,核心方法如下: 方法 参数 返回值 说明 newInstance() 无 引导类 初始化引导类 contains(String) 待验证的字符串 布尔值 验证字符串是否包含敏感词 findAll(String) 待验证的字符串 字符串列表 返回字符串中所有敏感词 replace(String, char) 使用指定的 char 替换敏感词 字符串 返回脱敏后的字符串

屏蔽功能

自闭症网瘾萝莉.ら 提交于 2019-12-29 01:30:04
KeyTree类 这个类的功能是 : 读取硬盘上的key.txt(里面存放的是敏感关键词),将之读入Set中,再讲Set中的元素传入到Map中(通过Map来生成敏感词的树状结构),并传出这个Map(敏感词树) public Map createKeyWord():创建一个Map类型的词库(敏感词树) private void readSetToMap(Set<String> keyWordSet): (内部方法)读取敏感词库,将敏感词放入HashSet中 private Set<String> readKeyTxt():(内部方法)读取敏感词库中的内容,将内容添加到set集合中 1 package pingbi; 2 3 /** 4 * keyWordSet:敏感词集合(中间量) 将原始key.txt中的内容先读入到这个变量(keyWordSet)中, 5 * 再由此变量生成敏感词树(keyTreeMap) 6 * newMap、nowMap:一起用来生成敏感词树(keyTreeMap)的 7 * keyTreeMap:敏感词树 8 */ 9 import java.io.BufferedReader; 10 import java.io.File; 11 import java.io.FileInputStream; 12 import java.io