首页 > 不良言论屏蔽方案探讨——自说自话方案

不良言论屏蔽方案探讨——自说自话方案

image引言

你是否曾遇到过这样糟糕的体验:

你在一个网页表单中,用心填写好所有项目后,点提交按钮时被告知“您提交的内容中有敏感信息,请检查!”,而你急得抓破头皮也找不到所谓的“敏感信息”在哪,几经修改也还是一样,致使根本无法提交内容;

更糟糕的网站甚至提交后转到其他页面才告知你有“敏感信息”,而此时你想重试的话只能重新填写整个表单!

显然,这些网站有些过敏了,但或许有网站主确实就是抱着“宁可错杀一千,绝不姑息一个”的想法来做的,这点在我国可以理解;不过就用户体验方面来说,我觉得用脏话回敬他们一点都不过分,因为他们完全不尊重用户体验,浪费用户的时间,给用户带来恼怒和困扰。

这里我提供一种简单易行的方案,可以兼顾网站安全和用户体验,我称之为“自说自话方案”。

 

简述

简而言之,这种方案就是让用户自言自语。

在用户提交内容时,如果我们认为内容包含不良信息,就将其设为“仅发布者可见”,这样发布者完全不知道自己的信息被屏蔽,就不会产生上述困扰,而网站也不会因为向公众显示不良信息而受处。

 

实现原理

实现原理很简单:

首先在用户首次访问网站时,为用户分配一个GUID,并将其存入Cookies中;

当用户发布信息时,将此GUID也存入信息表格的[发布者ID]字段中;此时如果认定信息属于不良信息,则将其标记删除(仅通过一个布尔值标记为删除,而非真的删除);

显示信息列表时,将用户此前分配到的GUID传入,在数据库中检索未标记删除或[发布者ID]与用户GUID相等的信息显示出来即可。

为了解决用户更换电脑后浏览时看不到此前发布的已被屏蔽的信息的情况,应当在用户注册时将此前分配的GUID记录在用户属性中,并在每次用户登录时,将记录下的GUID重新写入Cookies。这样做虽然仍然无法解决用户在换新机后、登录前这一段时间内无法看到此前发布的已被屏蔽的信息的情况,但应该不是很容易被用户发现的,因为作为一个正常用户来说,被屏蔽的信息量应当很少的,再加上换机且未登录状态的发生概率,可能性就很低了,而且就算被发现了他也可能认为是系统临时性故障,再者就算此兄疑心很重,经过反复试验搞明白了咱的把戏,他也没辙是不是?

 

优点

这样做的好处:

1.有极好的用户体验(或者说“没有什么不好的用户体验”,因为这样几乎不会对任何用户造成困扰)

2.维持高安全性

3.减少相关投诉和冲突

4.防止用户频繁重复尝试,继而减少服务器压力

5.让被屏蔽者误以为自己发布的内容在此网站上没有人感兴趣,继而以后不再尝试发布类似内容

 

缺点

这种宽松的提交验证方式的优势是对自然人而言的,它的弊端就在于对机器人自动发布的内容也保持同样宽容,但机器人可不会自知没趣而不再发帖,重复频繁发布的垃圾内容虽然不会显示给公众,但也会影响网站性能,所以需要在提交环节中加入验证码、提交频率判定、客户端脚本执行等技术来找出并屏蔽机器人访问。

其次就是在性能方面,无法用常规的缓存功能来缓存信息列表,因为对于不同的人来说列表是不同的。(这个如何解决呢?高手可以谈一下哈。我粗略想了一下,觉得可以在全局中缓存未标记删除的信息列表,然后每次用户访问时在Session中存入此用户GUID对应的信息列表,显示时将两个列表组合起来显示。)

 

结语

这里抛砖引玉,旨在希望各个程序员开动思维,在达成项目要求的前提下,尽可能地为用户提供更好的体验。

此方法结合我之前发表的《敏感内容自动评审类库及辅助工具》来做审查,效果会更好。

 

 

 

下载

本文的XPS版本:http://www.uushare.com/user/icesee/file/3185317

更多相关:

  •   同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API。  在微信小程序中,我们往往需要获取用户的身份信息,比如昵称、头像、性别、地区等。要得到这些信息,就需要我们调用获取用户信息的api了。在小程序中,微信非常重视对用户隐私的保护,因此有很多关于获取用户信息的...

  • UTRAN接口的通用协议模型如下图: 通俗地讲,通讯网络由终端(terminal)、连接(links)、网络节点(nodes)组成, links将nodes 关联起来。源终端(MO)发送的消息是怎样才能到目的终端(MT)呢? 消息经过links 和nodes,直至到达MT,其中关键是nodes怎么路由(route)消息到最终...

  •        Linux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统。用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。在系统安装过程中可以创建两种帐号:        1、root--超级用户帐号,使用这个帐号可以在系统中做任何事情。      ...

  • 1.用户基本概述 1.1.什么是用户? 用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房⼦,能够正常入驻) F:那Linux与Windows系统的用户有什么区别? Q:本质都是登陆系统,只不过Linux⽀持多个用户 同时登陆。 F:难道Windows就不算多用户操作系统吗? Q:其实不是,在Windows...

  • 背景信息 用户通过Telnet登录设备时,设备上必须配置验证方式,否则用户无法成功登录设备。设备支持不认证、密码认证和AAA认证三种用户界面的验证方式,其中AAA认证方式安全性最高。 采用AAA本地认证方式实现用户通过Telnet登录设备的身份认证,设备上需要开启Telnet服务,将用户界面(以VTY用户界面为例)的验证方式设...

  • 原来我们可以从官网 http://trafficserver.apache.org/tools/via 获取via头的解码信息来得到指定url的缓存状态信息,现在我们可以直接利用本地工具就可以达到目的。 traffic_via工具能够解码Via头信息,输入的参数要求是[]包含的字符串。 使用方法: 参考...

  • 简介 channel_stats插件能对每个channel收集运行时统计信息(速率,请求数,更多选项将在未来添加),这些统计信息通过http json方式输出,这些 接口代码取自stats_over_http插件。通常,该插件只用于具有*固定*个数的remap规则的反向代理服务器,它并非为那些不限制channel的代理服务器,比如op...

  • logger是一个shell命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息 logger语法: 可以使用的相关命令 -d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程ID -f, --fil...

  • 今天在测试中遇到了一个问题 使用JMeter时请求相关地址参数及方法都填写正确,但是相应数据返回始终不对,例如 查看取样器结果显示 200 正常,但响应数据不符合正常的结果。 经反复检查发现问题如下: 1)没有添加HTTP信息头管理器 (获取根据就近原则) 2)HTTP信息头管理器中填写错误,将Content-Type 填写成了Co...

  • 第一,你要有log4j的对应的包,由于我用的maven,所以直接在pom.xml文件依赖下载则可,如你尚为有此包,请自行百度下载导入,或上http://www.mvnrepository.com/搜索。上如则是我的log4j的包的版本。好了,用了jar包之后,用来学习的项目结构如下:在对应的路径下创建log4Test.java和log...

  •