国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

使用ASP程序?qū)Α癏TML炸彈”進(jìn)行屏蔽

2019-11-18 20:38:46
字體:
供稿:網(wǎng)友
  我們在使用asp來編寫論壇或者BBS程序的時(shí)候,經(jīng)常會(huì)遇到這樣的問題,當(dāng)網(wǎng)友在我的論壇或者BBS上面發(fā)表的文章帶有HTML代碼的時(shí)候,如何才能正常的顯示這篇帶有HTML代碼的文章呢?如果在向數(shù)據(jù)庫保存數(shù)據(jù)的時(shí)候或者向?yàn)g覽器輸出顯示內(nèi)容的時(shí)候不做任何處理,就會(huì)發(fā)生麻煩,比如,我發(fā)表的一篇文章帶有如下的代碼:

<script language="javascript">

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

{

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

}

</script>

  當(dāng)其他的網(wǎng)友閱讀這篇文章的時(shí)候,他就會(huì)發(fā)現(xiàn)他的瀏覽器在不停的跳動(dòng),整個(gè)屏幕一片混亂,這也就是俗稱的“HTML炸彈”。所以為了更好服務(wù)于到我們論壇貼文章和閱讀文章的網(wǎng)友,我們就要屏蔽類似的“HTML炸彈”。屏蔽“HTML炸彈”大致有兩種途徑:

  第一種是在將文章保存到數(shù)據(jù)庫之前就使用ASP程序過濾掉文章中的“HTML炸彈”。方法是:將文章中所有的英文半角的字符“<”以及“>”分別替換成為英文全角的字符“<”以及“>”,然后再保存到數(shù)據(jù)庫中。代碼如下:

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

'保存文章內(nèi)容

'參數(shù):Ftitle    文章標(biāo)題

'      Fcontent 文章內(nèi)容

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

Function SaveDoc(Ftitle,Fcontent)

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

'這里是聯(lián)接數(shù)據(jù)庫的代碼

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



'過濾掉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)



'下面正常保存到相應(yīng)的數(shù)據(jù)庫中就行了

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

End Function

  第二種方法是:在把文章保存到數(shù)據(jù)庫之前不做任何處理,只是在顯示到瀏覽器的時(shí)候,使用ASP對從數(shù)據(jù)庫中取出的數(shù)據(jù)作相應(yīng)的處理,以便正常顯示。因?yàn)槲恼碌膬?nèi)容有可能要顯示到兩種地方,一個(gè)是簡單的閱讀,需要顯示到Table;另外就是要回復(fù)文章,就要顯示到TextArea框里面,所以需要的兩份代碼如下:

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

'閱讀文章內(nèi)容,顯示在Table中

'參數(shù)content就是從數(shù)據(jù)庫中提取出來的文章內(nèi)容

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

Function ShowDocToRead(content)

  dim temp

   temp=""

'如果文章內(nèi)容為空,就退出

  if trim(content)="" then

     ShowDocToRead=""

     exit function

   end if



'過濾掉HTML炸彈

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

   temp=replace(temp,chr(32),"&nbsp;",1)

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

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

   ShowDocToRead=temp

End function



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

'閱讀文章內(nèi)容,顯示在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



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

  另一個(gè)需要注意的地方是,文章的內(nèi)容在保存到數(shù)據(jù)庫之前,應(yīng)當(dāng)過濾掉單引號,否則在執(zhí)行SQL語句的時(shí)候就會(huì)發(fā)生錯(cuò)誤,因?yàn)榇蠖鄶?shù)據(jù)庫系統(tǒng)都是把單引號當(dāng)作分割符號的。

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



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 靖远县| 罗城| 射阳县| 淮滨县| 安化县| 伊金霍洛旗| 汤原县| 禄丰县| 双辽市| 庆元县| 无棣县| 乌鲁木齐市| 鸡西市| 湟源县| 任丘市| 黄陵县| 中牟县| 剑河县| 邹城市| 扶余县| 南丰县| 家居| 衡南县| 科技| 西平县| 潜江市| 景东| 尚义县| 阿拉尔市| 祁东县| 汨罗市| 吉林省| 定南县| 上虞市| 依兰县| 南华县| 化隆| 泽库县| 安国市| 上栗县| 南城县|