Ewebeditor及fckeditork單引號(hào)問(wèn)題的解決方法
更新時(shí)間:2010年04月05日 23:46:52 作者:
為什么一個(gè)簡(jiǎn)單的單引號(hào)會(huì)引發(fā)不能添加到數(shù)據(jù)庫(kù)呢,想到這里,我們想到了分析下入庫(kù)代碼并找出了原因,下面是解決方法。
Ewebeditor及fckeditor,90%的網(wǎng)站都是采用這兩種編輯器作為產(chǎn)品或者內(nèi)容的說(shuō)明部分的編輯窗口,近日,一客戶的外貿(mào)站點(diǎn)基本上快完工了,因客戶產(chǎn)品分類多,故而讓客戶自己在后臺(tái)添加產(chǎn)品,但是客戶反映,在后臺(tái)添加產(chǎn)品時(shí),如果產(chǎn)品說(shuō)明內(nèi)容太過(guò)復(fù)雜的話,產(chǎn)品怎么也添加不入數(shù)據(jù)庫(kù)中。
當(dāng)時(shí),我們也好生郁悶,這到底怎么回事,我們親自測(cè)試后臺(tái)添加任意的產(chǎn)品或者文字都能成功,偏偏他就不行,在網(wǎng)站搜索了相關(guān)的如“Ewebeditor 不能添加到數(shù)據(jù)庫(kù)”,似乎找到了一點(diǎn)答案,因Ewebeditor自身沒(méi)對(duì)單引號(hào)過(guò)濾,導(dǎo)致了添加不到數(shù)據(jù)庫(kù)的問(wèn)題。于是乎,我們把編輯器換成了fckeditor,可是還是不行,那是Ewebeditor及fckeditor自帶的不完善導(dǎo)致的嗎?為什么一個(gè)簡(jiǎn)單的單引號(hào)會(huì)引發(fā)不能添加到數(shù)據(jù)庫(kù)呢,想到這里,我們想到了分析下入庫(kù)代碼,我們采用的是SQL=insert into product(title,content) values(' " &request("title")& "' ,' "&request("content")& " ' )的寫(xiě)法,于是我們找到客戶當(dāng)時(shí)COPY進(jìn)編輯器里的內(nèi)容,發(fā)現(xiàn),果然這內(nèi)容中包括有單引號(hào),原來(lái),正是由于客戶提交到編輯器里的內(nèi)容中含有單引號(hào),導(dǎo)致我們的SQL語(yǔ)句變化了,相當(dāng)于原來(lái)是SQL=insert into product(title,content) values('內(nèi)容' ,'內(nèi)容' )變成了SQL=insert into product(title,content) values(' 內(nèi)容' ,' 內(nèi)容'' ) ,我們細(xì)看就知道,就因?yàn)檫@content里多了個(gè)單引號(hào),SQL語(yǔ)句發(fā)生的嚴(yán)重的寫(xiě)法錯(cuò)誤,但是,我們也奇怪,既然他寫(xiě)法錯(cuò)誤,為什么SQL語(yǔ)句不給出錯(cuò)誤提示呢,竟然也會(huì)提示操作成功,想到這里,我們想到了2003年那幾年,普遍的小黑客喜歡用的'or'='or'的后臺(tái)入侵法,是乎正是利用了SQL執(zhí)行時(shí),沒(méi)過(guò)濾單引號(hào)的BUG,導(dǎo)致SQL怎么執(zhí)行,結(jié)果都返回真,呵呵,沒(méi)想到,原以為寫(xiě)程序盡量圖個(gè)簡(jiǎn)單明了,也是個(gè)錯(cuò)啊。好了,問(wèn)題找到了,以后,凡是SQL入庫(kù)前,我們都把字段過(guò)濾后再傳值,就不會(huì)再出這樣的問(wèn)題了,下面是一個(gè)非常完善的SQL安全過(guò)濾函數(shù),大家直接拿去就可以調(diào)用了。
Function HTMLEncode(Str)
If Isnull(Str) Then
HTMLEncode = ""
Exit Function
End If
Str = Replace(Str,Chr(0),"", 1, -1, 1)
Str = Replace(Str, """", """, 1, -1, 1)
Str = Replace(Str,"<","<", 1, -1, 1)
Str = Replace(Str,">",">", 1, -1, 1)
Str = Replace(Str, "script", "script", 1, -1, 0)
Str = Replace(Str, "SCRIPT", "SCRIPT", 1, -1, 0)
Str = Replace(Str, "Script", "Script", 1, -1, 0)
Str = Replace(Str, "script", "Script", 1, -1, 1)
Str = Replace(Str, "object", "object", 1, -1, 0)
Str = Replace(Str, "OBJECT", "OBJECT", 1, -1, 0)
Str = Replace(Str, "Object", "Object", 1, -1, 0)
Str = Replace(Str, "object", "Object", 1, -1, 1)
Str = Replace(Str, "applet", "applet", 1, -1, 0)
Str = Replace(Str, "APPLET", "APPLET", 1, -1, 0)
Str = Replace(Str, "Applet", "Applet", 1, -1, 0)
Str = Replace(Str, "applet", "Applet", 1, -1, 1)
Str = Replace(Str, "[", "[")
Str = Replace(Str, "]", "]")
Str = Replace(Str, """", "", 1, -1, 1)
Str = Replace(Str, "=", "=", 1, -1, 1)
Str = Replace(Str, "'", "''", 1, -1, 1)
Str = Replace(Str, "select", "select", 1, -1, 1)
Str = Replace(Str, "execute", "execute", 1, -1, 1)
Str = Replace(Str, "exec", "exec", 1, -1, 1)
Str = Replace(Str, "join", "join", 1, -1, 1)
Str = Replace(Str, "union", "union", 1, -1, 1)
Str = Replace(Str, "where", "where", 1, -1, 1)
Str = Replace(Str, "insert", "insert", 1, -1, 1)
Str = Replace(Str, "delete", "delete", 1, -1, 1)
Str = Replace(Str, "update", "update", 1, -1, 1)
Str = Replace(Str, "like", "like", 1, -1, 1)
Str = Replace(Str, "drop", "drop", 1, -1, 1)
Str = Replace(Str, "create", "create", 1, -1, 1)
Str = Replace(Str, "rename", "rename", 1, -1, 1)
Str = Replace(Str, "count", "count", 1, -1, 1)
Str = Replace(Str, "chr", "chr", 1, -1, 1)
Str = Replace(Str, "mid", "mid", 1, -1, 1)
Str = Replace(Str, "truncate", "truncate", 1, -1, 1)
Str = Replace(Str, "nchar", "nchar", 1, -1, 1)
Str = Replace(Str, "char", "char", 1, -1, 1)
Str = Replace(Str, "alter", "alter", 1, -1, 1)
Str = Replace(Str, "cast", "cast", 1, -1, 1)
Str = Replace(Str, "exists", "exists", 1, -1, 1)
Str = Replace(Str,Chr(13),"<br>", 1, -1, 1)
HTMLEncode = Replace(Str,"'","''", 1, -1, 1)
End Function
當(dāng)時(shí),我們也好生郁悶,這到底怎么回事,我們親自測(cè)試后臺(tái)添加任意的產(chǎn)品或者文字都能成功,偏偏他就不行,在網(wǎng)站搜索了相關(guān)的如“Ewebeditor 不能添加到數(shù)據(jù)庫(kù)”,似乎找到了一點(diǎn)答案,因Ewebeditor自身沒(méi)對(duì)單引號(hào)過(guò)濾,導(dǎo)致了添加不到數(shù)據(jù)庫(kù)的問(wèn)題。于是乎,我們把編輯器換成了fckeditor,可是還是不行,那是Ewebeditor及fckeditor自帶的不完善導(dǎo)致的嗎?為什么一個(gè)簡(jiǎn)單的單引號(hào)會(huì)引發(fā)不能添加到數(shù)據(jù)庫(kù)呢,想到這里,我們想到了分析下入庫(kù)代碼,我們采用的是SQL=insert into product(title,content) values(' " &request("title")& "' ,' "&request("content")& " ' )的寫(xiě)法,于是我們找到客戶當(dāng)時(shí)COPY進(jìn)編輯器里的內(nèi)容,發(fā)現(xiàn),果然這內(nèi)容中包括有單引號(hào),原來(lái),正是由于客戶提交到編輯器里的內(nèi)容中含有單引號(hào),導(dǎo)致我們的SQL語(yǔ)句變化了,相當(dāng)于原來(lái)是SQL=insert into product(title,content) values('內(nèi)容' ,'內(nèi)容' )變成了SQL=insert into product(title,content) values(' 內(nèi)容' ,' 內(nèi)容'' ) ,我們細(xì)看就知道,就因?yàn)檫@content里多了個(gè)單引號(hào),SQL語(yǔ)句發(fā)生的嚴(yán)重的寫(xiě)法錯(cuò)誤,但是,我們也奇怪,既然他寫(xiě)法錯(cuò)誤,為什么SQL語(yǔ)句不給出錯(cuò)誤提示呢,竟然也會(huì)提示操作成功,想到這里,我們想到了2003年那幾年,普遍的小黑客喜歡用的'or'='or'的后臺(tái)入侵法,是乎正是利用了SQL執(zhí)行時(shí),沒(méi)過(guò)濾單引號(hào)的BUG,導(dǎo)致SQL怎么執(zhí)行,結(jié)果都返回真,呵呵,沒(méi)想到,原以為寫(xiě)程序盡量圖個(gè)簡(jiǎn)單明了,也是個(gè)錯(cuò)啊。好了,問(wèn)題找到了,以后,凡是SQL入庫(kù)前,我們都把字段過(guò)濾后再傳值,就不會(huì)再出這樣的問(wèn)題了,下面是一個(gè)非常完善的SQL安全過(guò)濾函數(shù),大家直接拿去就可以調(diào)用了。
復(fù)制代碼 代碼如下:
Function HTMLEncode(Str)
If Isnull(Str) Then
HTMLEncode = ""
Exit Function
End If
Str = Replace(Str,Chr(0),"", 1, -1, 1)
Str = Replace(Str, """", """, 1, -1, 1)
Str = Replace(Str,"<","<", 1, -1, 1)
Str = Replace(Str,">",">", 1, -1, 1)
Str = Replace(Str, "script", "script", 1, -1, 0)
Str = Replace(Str, "SCRIPT", "SCRIPT", 1, -1, 0)
Str = Replace(Str, "Script", "Script", 1, -1, 0)
Str = Replace(Str, "script", "Script", 1, -1, 1)
Str = Replace(Str, "object", "object", 1, -1, 0)
Str = Replace(Str, "OBJECT", "OBJECT", 1, -1, 0)
Str = Replace(Str, "Object", "Object", 1, -1, 0)
Str = Replace(Str, "object", "Object", 1, -1, 1)
Str = Replace(Str, "applet", "applet", 1, -1, 0)
Str = Replace(Str, "APPLET", "APPLET", 1, -1, 0)
Str = Replace(Str, "Applet", "Applet", 1, -1, 0)
Str = Replace(Str, "applet", "Applet", 1, -1, 1)
Str = Replace(Str, "[", "[")
Str = Replace(Str, "]", "]")
Str = Replace(Str, """", "", 1, -1, 1)
Str = Replace(Str, "=", "=", 1, -1, 1)
Str = Replace(Str, "'", "''", 1, -1, 1)
Str = Replace(Str, "select", "select", 1, -1, 1)
Str = Replace(Str, "execute", "execute", 1, -1, 1)
Str = Replace(Str, "exec", "exec", 1, -1, 1)
Str = Replace(Str, "join", "join", 1, -1, 1)
Str = Replace(Str, "union", "union", 1, -1, 1)
Str = Replace(Str, "where", "where", 1, -1, 1)
Str = Replace(Str, "insert", "insert", 1, -1, 1)
Str = Replace(Str, "delete", "delete", 1, -1, 1)
Str = Replace(Str, "update", "update", 1, -1, 1)
Str = Replace(Str, "like", "like", 1, -1, 1)
Str = Replace(Str, "drop", "drop", 1, -1, 1)
Str = Replace(Str, "create", "create", 1, -1, 1)
Str = Replace(Str, "rename", "rename", 1, -1, 1)
Str = Replace(Str, "count", "count", 1, -1, 1)
Str = Replace(Str, "chr", "chr", 1, -1, 1)
Str = Replace(Str, "mid", "mid", 1, -1, 1)
Str = Replace(Str, "truncate", "truncate", 1, -1, 1)
Str = Replace(Str, "nchar", "nchar", 1, -1, 1)
Str = Replace(Str, "char", "char", 1, -1, 1)
Str = Replace(Str, "alter", "alter", 1, -1, 1)
Str = Replace(Str, "cast", "cast", 1, -1, 1)
Str = Replace(Str, "exists", "exists", 1, -1, 1)
Str = Replace(Str,Chr(13),"<br>", 1, -1, 1)
HTMLEncode = Replace(Str,"'","''", 1, -1, 1)
End Function
您可能感興趣的文章:
- Fckeditor XML Request error:internal server error (500) 解決方法小結(jié)
- FCKeditor編輯器添加圖片上傳功能及圖片路徑問(wèn)題解決方法
- ie9后瀏覽器fckeditor無(wú)法上傳圖片、彈出浮層內(nèi)容不顯示的解決方法
- fckeditor在ie9中無(wú)法彈出對(duì)話框的解決方法(彈出層兼容問(wèn)題)
- FCKeditor 圖片上傳進(jìn)度條不動(dòng)的解決方法
- asp.net+FCKeditor上傳圖片顯示叉叉圖片無(wú)法顯示的問(wèn)題的解決方法
- 瀏覽器執(zhí)行history.go(-1) FCKeditor編輯框內(nèi)顯示html源代碼的解決方法
- 偽靜態(tài)下不能使用FCKeditor的解決方法
- FCKeditor 2.6 編碼錯(cuò)誤導(dǎo)致修改的內(nèi)容出現(xiàn)亂碼的解決方法
- FCKEDITOR 的高級(jí)功能和常見(jiàn)問(wèn)題的解決方法
- jsp fckeditor 上傳中文圖片亂碼問(wèn)題的解決方法
- Asp.net FCKEditor 2.6.3 上傳文件沒(méi)有權(quán)限解決方法
- fckeditor部署到weblogic出現(xiàn)xml無(wú)法讀取及樣式不能顯示問(wèn)題的解決方法
相關(guān)文章
使用 CodeMirror 打造屬于自己的帶高亮顯示的在線代碼編輯器
寫(xiě)這個(gè)的目的是因?yàn)橹绊?xiàng)目里用到過(guò) CodeMirror,覺(jué)得作為一款在線代碼編輯器還是不錯(cuò),也看到過(guò)有些網(wǎng)站用到過(guò)在線代碼編輯,當(dāng)然我不知道他們是用什么做的2018-02-02FCKEDITOR 的高級(jí)功能和常見(jiàn)問(wèn)題的解決方法
FCKeditor是一個(gè)專門(mén)使用在網(wǎng)頁(yè)上屬于開(kāi)放源代碼的所見(jiàn)即所得文字編輯器。它志于輕量化,不需要太復(fù)雜的安裝步驟即可使用。2010-01-01javascript 在線文本編輯器實(shí)現(xiàn)代碼
javascript 在線文本編輯器實(shí)現(xiàn)代碼,非常值得學(xué)習(xí)。2010-03-03在asp.net中KindEditor編輯器的使用方法小結(jié)
由于國(guó)外的服務(wù)器好象對(duì)一些要引用dll編輯器由于安全問(wèn)題,鎖定了web.config中的一些權(quán)限,在先試了FreeTexbox不行,FCKEditor也不行,因?yàn)槎际且胐ll文件,最后同事介紹一款 純js的kindeditor編輯器,2010-12-12SyntaxHighlighter 語(yǔ)法高亮插件的使用教程
現(xiàn)在做it編程類信息的網(wǎng)站,提供的源碼如果能提供代碼高亮對(duì)代碼的閱讀效果會(huì)提高不少。2010-02-02CKEditor中加入syntaxhighlighter代碼高亮插件
CKEditor是新一代的FCKeditor,是一個(gè)重新開(kāi)發(fā)的版本。CKEditor是全球最優(yōu)秀的網(wǎng)頁(yè)在線文字編輯器之一,因其驚人的性能與可擴(kuò)展性而廣泛的被運(yùn)用于各大網(wǎng)站2014-12-12