ASP留言廣告的過(guò)濾方法
留言板,論壇里的垃圾廣告想必是每個(gè)人都很頭疼的問(wèn)題,為什么屢禁不止?這主要是大量的發(fā)帖機(jī)器人的惡劣行為,當(dāng)然也有人工的。過(guò)濾廣告的方法太多了,這不是我們重點(diǎn)討論的問(wèn)題。留言板,加入了很完善的廣告過(guò)濾機(jī)制,比如說(shuō),留言中不包含中文,或者包含2個(gè)以上的http等等就認(rèn)為是廣告,的確也起到了作用,自己測(cè)試也一切正常。但是隨后,依舊有大量的垃圾廣告留言,我百思不得其解,這些廣告是怎么發(fā)上去的呢?按照廣告內(nèi)容我手動(dòng)實(shí)驗(yàn)輸入是不能發(fā)上去的。難道直接寫數(shù)據(jù)庫(kù)?這個(gè)在隨后也否定了,我檢查了數(shù)據(jù)庫(kù),所有寫入內(nèi)容均是正常的。這下我真的不知道哪里出了問(wèn)題,搜索了半天也沒(méi)搜索到結(jié)果。
一個(gè)偶然的機(jī)會(huì),調(diào)試JS的`時(shí)候,我突然想到,所有的驗(yàn)證機(jī)制,過(guò)濾機(jī)制全部是寫在JS里的,如果瀏覽器禁止運(yùn)行JS腳本呢?我把瀏覽器的允許運(yùn)行JS腳本給關(guān)閉掉,結(jié)果不出所料,廣告猶如闖入無(wú)人之境,可以隨便發(fā)了!
一個(gè)設(shè)置,就讓我們的防御系統(tǒng)徹底崩潰!JS真是對(duì)你又愛又恨!
找到了問(wèn)題,解決也不難,那就是在ASP或PHP中進(jìn)行過(guò)濾了,這里以ASP為例:比如說(shuō)檢查留言有沒(méi)有包含中文字符
01.Function CheckExp(patrn, strng)
02. Dim regEx, Match
03. Set regEx = New RegExp
04. regEx.Pattern = patrn
05. regEx.IgnoreCase = true
06. regEx.Global = True
07. Matches = regEx.test(strng)
08. CheckExp = matches
09.End Function
10.
11.
12.Function chkzi2(f_Str)
13. if Not IsNull(f_Str) Then
14. if CheckExp("^[^\u4E00-\u9FA5]+$", f_Str)=True then
15. chkzi2=False '不包含中文
16. Else
17. chkzi2=True '包含中文
18. End If
19. End If
20.End Function
利用一個(gè)正則表達(dá)式來(lái)檢測(cè),這樣的腳本是不會(huì)被過(guò)濾的
所以,如果有重要的檢測(cè)機(jī)制,除了JS中寫一遍外,頁(yè)面文件中最好也寫一遍,否則,遇到這種禁用JS腳本的瀏覽器,所有的防御就徹底無(wú)效了!
【ASP留言廣告的過(guò)濾方法】相關(guān)文章:
過(guò)濾的過(guò)程和方法06-21
asp和asp.net之間的區(qū)別11-14
過(guò)濾HTML代碼11-11