|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-11-15, 06:00 AM | #1 (permalink) |
榮譽會員
|
遮閉論壇中的「HTML炸彈」
我們在使用ASP來編寫論壇或者BBS程序的時候,經常會遇到這樣的問題,當網友在我的論壇或者BBS上面發表的文章帶有HTML程式碼的時候,如何才能正常的顯示這篇帶有HTML程式碼的文章呢?如果在向資料庫儲存資料的時候或者向瀏覽器輸出顯示內容的時候不做任何處理,就會發生麻煩,比如,我發表的一篇文章帶有如下的程式碼:
<script language="javascript"> for(i=1;i<=10000;i++) </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(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(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語句的時候就會發生錯誤,因為大多資料庫系統都是把單引號當作分割符號的。 |
送花文章: 3,
|