- 相關(guān)推薦
ASP留言廣告的過濾方法
留言板,論壇里的垃圾廣告想必是每個(gè)人都很頭疼的問題,為什么屢禁不止?這主要是大量的發(fā)帖機(jī)器人的惡劣行為,當(dāng)然也有人工的。過濾廣告的方法太多了,這不是我們重點(diǎn)討論的問題。留言板,加入了很完善的廣告過濾機(jī)制,比如說,留言中不包含中文,或者包含2個(gè)以上的http等等就認(rèn)為是廣告,的確也起到了作用,自己測試也一切正常。但是隨后,依舊有大量的垃圾廣告留言,我百思不得其解,這些廣告是怎么發(fā)上去的呢?按照廣告內(nèi)容我手動(dòng)實(shí)驗(yàn)輸入是不能發(fā)上去的。難道直接寫數(shù)據(jù)庫?這個(gè)在隨后也否定了,我檢查了數(shù)據(jù)庫,所有寫入內(nèi)容均是正常的。這下我真的不知道哪里出了問題,搜索了半天也沒搜索到結(jié)果。
一個(gè)偶然的機(jī)會(huì),調(diào)試JS的時(shí)候,我突然想到,所有的驗(yàn)證機(jī)制,過濾機(jī)制全部是寫在JS里的,如果瀏覽器禁止運(yùn)行JS腳本呢?我把瀏覽器的允許運(yùn)行JS腳本給關(guān)閉掉,結(jié)果不出所料,廣告猶如闖入無人之境,可以隨便發(fā)了!
一個(gè)設(shè)置,就讓我們的防御系統(tǒng)徹底崩潰!JS真是對(duì)你又愛又恨!
找到了問題,解決也不難,那就是在ASP或PHP中進(jìn)行過濾了,這里以ASP為例:比如說檢查留言有沒有包含中文字符
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á)式來檢測,這樣的腳本是不會(huì)被過濾的
所以,如果有重要的檢測機(jī)制,除了JS中寫一遍外,頁面文件中最好也寫一遍,否則,遇到這種禁用JS腳本的瀏覽器,所有的防御就徹底無效了!
【ASP留言廣告的過濾方法】相關(guān)文章:
ASP的SQL防注入過濾涵數(shù)09-01
ASP顯示頁面時(shí)間的方法10-18
CAD點(diǎn)過濾器的使用方法10-18
asp.net+jquery Jsonp使用方法介紹08-23
關(guān)于asp.net中List的使用方法11-02
關(guān)于ASP.NET DropDownList控件的使用方法11-06
過濾HTML代碼08-29