a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Ruby > 正文

在博客中屏蔽垃圾留言的簡單方法

2020-10-29 19:37:51
字體:
來源:轉載
供稿:網友

垃圾留言俗稱 Spam,就是到處在留言框里發垃圾廣告的那些,相信大多數人都見識過。以前使用 WordPress 的時候,因為裝了防 Spam 的插件,可以屏蔽掉絕大多數的 Spam。但是自從上個月從 WordPress 遷移到新的博客平臺后,第一天上線就遭遇了幾個Spam,全都是國外的推廣的廣告什么的。博客的訪問量本身就很小,如果每天都來幾條 Spam,太煞風景了,手工刪除也太浪費時間,而且又是自己寫的小系統,也不可能有什么插件可選,只能自己想辦法解決了。

看到有很多網站都是加個驗證碼來解決這個問題的,因為 Spam 很難從圖片中識別出正確的驗證碼,但是對于正常的留言者來說,又憑空多了一個步驟,那么除此之外還有什么方法能屏蔽這些 Spam 呢?

仔細分析一下,正常的留言應該是人類通過瀏覽器提交數據到我們的服務器,而 Spam 通常都是由固定的程序在互聯網上掃描評論表單,偽造表單中的數據,然后判斷表單的action,然后將數據 POST 到這個action上來。也就是說,Spam 發送方都沒有正常地通過瀏覽器訪問過我們的表單頁面,也就是說,頁面上的 JavaScript 都沒有執行過咯,明白這個特點,那問題就迎刃而解了。

首先,我們可以在表單中放一個隱藏的文本框,這個文本框對正常用戶來說是不可見的:

<div style="margin:0;padding:0;display:inline">  <input id="checkspam" name="checkspam" type="hidden" value="Hello Ruby" /></div>

然后再寫一小段 JavaScript 代碼來改變這個文本框的值:

jQuery(document).ready(function($) {  $("#checkspam").val('abcdefg');});

由于對于 Spam 發送者來說,這段 JavaScript 是沒有被執行的,那么接下來要做的事情就是在服務端判斷這個隱藏文本框的值了,如果不是 JavaScript 所更改后的值,那么這條留言無疑就是 Spam 了(排除正常用戶的瀏覽器禁用 JavaScript 的情況)。

下面以 Ruby on Rails 應用為例:

if params[:checkspam] == "abcdefg" @comment.saveelse # It's a spam...end

其實,這個隱藏文本框的作用跟驗證碼是一樣的,只不過這個驗證碼是由 JavaScript 幫忙自動輸入了。

用了這個方法至今一月有余,目前沒有再發生過 Spam 的情況。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视频网站 | 久草久草久草 | 欧美三区 | 日韩一区中文字幕 | 国产色在线 | 精品国产一区二区在线 | 国产激情久久久久久 | 欧美精品久久久 | 中文字幕精品视频在线观看 | 成人免费crm一区二区 | 成人高清网站 | 国产欧美精品一区二区三区 | 日本天天操| 国产三区二区一区 | 日韩精品专区在线影院重磅 | 国产一区久久精品 | 久久久精彩视频 | 亚洲444kkkk在线观看最新 | 亚洲在线一区 | 欧美二区在线 | 日本精品一区 | 国产羞羞视频在线观看 | 久久久久一区二区三区 | 亚洲 精品 综合 精品 自拍 | 国产精品免费一区二区 | 91久久艹 | 五月香婷婷 | 久久亚洲免费 | 自拍偷拍视频网站 | www.精品| a成人在线| 久久久久一区二区三区 | 成年人免费看 | 日韩高清中文字幕 | 国产成人精品亚洲日本在线观看 | 日本二区在线播放 | 女人口述交换啪啪高潮过程 | 中文av在线免费观看 | 97品白浆高清久久久久久 | 日韩视频在线一区 | 国产男女爽爽爽免费视频 |