[Debugging]分析博客园提交评论的校验规则
2009-12-20 01:36
183 查看
今天偶然发现,在博客园同时打开多篇文章,如果短时间内分别在不同文章里提交相同内容的评论,就会提示"该评论已发表过!"。一开始感觉这应该是个bug,毕竟在同一篇文章里,并不存在相同的评论。后来经过反复测试,通过Fiddler可以发现,这个提示信息是在后台http://www.cnblogs.com/ws/CommentService.asmx里的 AddComment返回的:
这段脚本决定了,对于同一篇文章,不能反复提交相同评论,但是这种逻辑不能阻止交替提交相同的评论。从为了防止恶意刷屏的角度来说,这个限制应该还算是比较合理的,只是相同页面已经有了alert("该评论已发表过!");限制,如果跨页面提交相同评论的时候,这个提示信息如果能改成"XXX秒内,不允许提交相同评论!"更直观一点,不容易产生歧义。
综合前面所有的分析,最后对博客园的评论校验规则的实现做个总结:
首先,会在客户端通过比较span_comment_posted缓存的内容,判断是否连续提交了相同评论,并直接在客户端通过alert给出提示信息,因为在刷新页面或切换到其他页面以后span_comment_posted内容就没意义了,所以这种校验只在相同页面内且没有人为刷新过时有效。
其次,就是在后台的CommentService里,限制在一段时间内(好像是60秒)不能连续提交相同的内容。这种方式比较可靠,不管是否刷新页面,是否跨页面,都不会影响校验规则。
最后,好像在CommentService里还有一个连续提交多少次评论以后,就会提示"提交评论太频繁!"的校验,实现方式跟前者应该一样。
总体感觉博客园的校验规则还是比较完善的,除了上面说过的提示不太准确,暂时没有什么好的意见,各位看客有什么更好的意见,不妨说出来大家一起讨论。
可以发现,前面返回信息中的“IsSuccess”和“ReturnData”属性决定了给出了这个提示。如此说来这似乎是博客园在后台里有意加入的一个限制,大概的逻辑好像是:不管是否同一篇文章,在一段时间内不能提交相同内容的评论。换句话说,即使相同内容的评论,在同一篇文章里,只要间隔时间足够长,还是可以反复提交的。在相同文章里,有下面这个限制: if($("#span_comment_posted").html()!='' && $("#span_comment_posted").html()==content){ alert("该评论已发表过!"); return; }
这段脚本决定了,对于同一篇文章,不能反复提交相同评论,但是这种逻辑不能阻止交替提交相同的评论。从为了防止恶意刷屏的角度来说,这个限制应该还算是比较合理的,只是相同页面已经有了alert("该评论已发表过!");限制,如果跨页面提交相同评论的时候,这个提示信息如果能改成"XXX秒内,不允许提交相同评论!"更直观一点,不容易产生歧义。
综合前面所有的分析,最后对博客园的评论校验规则的实现做个总结:
首先,会在客户端通过比较span_comment_posted缓存的内容,判断是否连续提交了相同评论,并直接在客户端通过alert给出提示信息,因为在刷新页面或切换到其他页面以后span_comment_posted内容就没意义了,所以这种校验只在相同页面内且没有人为刷新过时有效。
其次,就是在后台的CommentService里,限制在一段时间内(好像是60秒)不能连续提交相同的内容。这种方式比较可靠,不管是否刷新页面,是否跨页面,都不会影响校验规则。
最后,好像在CommentService里还有一个连续提交多少次评论以后,就会提示"提交评论太频繁!"的校验,实现方式跟前者应该一样。
总体感觉博客园的校验规则还是比较完善的,除了上面说过的提示不太准确,暂时没有什么好的意见,各位看客有什么更好的意见,不妨说出来大家一起讨论。
相关文章推荐
- 如何精确计算一个方法执行的时间-如博客园的提交评论提交耗时xxx毫秒?
- 博客园博客评论ajax异步提交练习
- jquery avlidate 插件:(3)校验规则
- 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- 电商产品评论数据情感分析代码详解
- Ajax异步提交数据返回值的换行问题实例分析
- Laravel 校验规则之字段值唯一性校验
- JAVA后端生成Token(令牌),用于校验客户端,防止重复提交
- form表单提交之前校验返回true之后自动提交
- 较为全面的Asp.net提交验证方案分析 (上)
- php提交post数组参数实例分析
- 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- tshark命令行抓流量包过滤字段进行snort规则分析整理
- C语言中的static 详细分析 2014-10-11 15:15 143人阅读 评论(0) 收藏
- Makefile的规则 分类: arm-linux-Ubuntu 2013-09-11 14:09 517人阅读 评论(0) 收藏
- C++ sizeof 使用规则及陷阱分析【转】
- JS两种类型的表单提交方法实例分析
- mysql字符集与校验规则的设置
- 银行卡校验规则(Luhn算法)
- CSDN博文“待定”如何避免检测规则分析“待定”