使用ASP程式對“HTML炸彈”進行屏蔽

來源:互聯網
上載者:User
我們在使用ASP來編寫論壇或者BBS程式的時候,經常會遇到這樣的問題,當網友在我的論壇或者BBS上面發表的文章帶有HTML代碼的時候,如何才能正常的顯示這篇帶有HTML代碼的文章呢?如果在向資料庫儲存資料的時候或者向瀏覽器輸出顯示內容的時候不做任何處理,就會發生麻煩,比如,我發表的一篇文章帶有如下的代碼:

<script language="javascript">

for(i=1;i<=10000;i++)

{

  parent.moveBy(20,20);parent.moveBy(-20,-20)

}

</script>

  當其他的網友閱讀這篇文章的時候,他就會發現他的瀏覽器在不停的跳動,整個螢幕一片混亂,這也就是俗稱的“HTML炸彈”。所以為了更好服務於到我們論壇貼文章和閱讀文章的網友,我們就要屏蔽類似的“HTML炸彈”。屏蔽“HTML炸彈”大致有兩種途徑:

  第一種是在將文章儲存到資料庫之前就使用ASP程式過濾掉文章中的“HTML炸彈”。方法是:將文章中所有的英文半形的字元“<”以及“>”分別替換成為英文全形的字元“<”以及“>”,然後再儲存到資料庫中。代碼如下:

'*******************************

'儲存文章內容

'參數:Ftitle    文章標題

'      Fcontent 文章內容

'*******************************

Function SaveDoc(Ftitle,Fcontent)

'..................

'這裡是聯結資料庫的代碼

'....................



'過濾掉HTML炸彈以及單引號

Ftitle =replace(Ftitle,"'","''",1)

Ftitle =replace(Ftitle,"<","<",1)

Ftitle =replace(Ftitle,">",">",1)

Fcontent =replace(Fcontent,"'","''",1)

Fcontent =replace(Fcontent,"<","<",1)

Fcontent =replace(Fcontent,">",">",1)



'下面正常儲存到相應的資料庫中就行了

'...................

End Function

  第二種方法是:在把文章儲存到資料庫之前不做任何處理,只是在顯示到瀏覽器的時候,使用ASP對從資料庫中取出的資料作相應的處理,以便正常顯示。因為文章的內容有可能要顯示到兩種地方,一個是簡單的閱讀,需要顯示到Table;另外就是要回複文章,就要顯示到TextArea框裡面,所以需要的兩份代碼如下:

'*****************************

'閱讀文章內容,顯示在Table中

'參數content就是從資料庫中提取出來的文章內容

'*****************************

Function ShowDocToRead(content)

  dim temp

   temp=""

'如果文章內容為空白,就退出

  if trim(content)="" then

     ShowDocToRead=""

     exit function

   end if



'過濾掉HTML炸彈

   temp=replace(content,chr(13)&chr(10),"<br>",1)

   temp=replace(temp,chr(32)," ",1)

   temp =replace(temp,"<","<",1)

   temp =replace(temp,">",">",1)

   ShowDocToRead=temp

End function



'**********************************

'閱讀文章內容,顯示在TextArea中,於用

'回覆.

'

'***********************************

Function ShowDocToWrite(content,author)

dim temp



temp=""

if trim(content)=""then

ShowDocToWrite=""

exit function

end if

content="【" & author & "在大作中談到:】" & chr(13)&chr(10) & content temp=">" & replace(content,chr(10),chr(10)&">",1)

temp =replace(temp,"<","<",1)

temp =replace(temp,">",">",1)



ShowDocToWrite=temp

End Function



  這樣,通過這兩種方法,即便是文章內容包含HTML代碼,或者Script語句,我們的論壇或者BBS也可以正常將文章內容顯示出來了,可以有效防止個別人對論壇或者BBS的惡意攻擊,使我們的論壇或者BBS更加安全和強壯。

  另一個需要注意的地方是,文章的內容在儲存到資料庫之前,應當過濾掉單引號,否則在執行SQL語句的時候就會發生錯誤,因為大多資料庫系統都是把單引號當作分割符號的。

  (以上ASP程式在WinNT4.0英文版SP5,IIS4.0,MS SQL Server7.0SP2運行通過)



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.