2012-12-30 13 views
0

我在我的頁面中使用ckeditor控件將數據插入到我的數據庫中,該控件允許惡意用戶將腳本注入到我的數據庫中。如何在ckeditor中爲asp.net 2.0注入prevnet腳本

我該如何防止這種情況發生?

以下是用於插入數據庫的代碼。

CKeditor1.text包含來自編輯器控件的文本。

intro = intro + "...."; 
myStatic.insertFields("ID,Title, Block,isDep,dat,imgpath,intro", " E_News", "" + maxID + ",'" + txtTitle.Text + "','" + CKEditor1.Text.Trim() + "'," + isDep + ",'" + d + "','" + txtimgpath.Text + "','" +intro.Trim()+"'"); 
+0

您正在使用什麼碼?聽起來像你需要一些輸入消毒。 – Spike

+0

我使用c#語言來插入數據。我需要阻止ckeditor插入腳本 ..或其他腳本示例 –

+0

ckeditor用於插入數據庫的代碼是什麼?那是你需要做你的衛生的地方。你真的需要在你的問題中包含這些細節。 – Spike

回答

1

一種可能的解決方案是編碼輸入到數據庫中的值。這當然取決於如何再次輸出存儲的值。

另一個選擇是讓黑名單中可能被認爲是危險的字符,然後只是一起拒絕輸入。

.NET內置了拒絕包含潛在危險的輸入請求一些功能,但我不知道有足夠的瞭解你的情況..

HttpServerUtility.HtmlEncode將適用於你的數據庫編碼存儲腳本。但是,如果您在輸出時對其進行解碼,則會出現同樣的問題!

http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx

因此,你應該使用白名單,並拒絕任何包含輸入腳本標籤(你應該找一個庫,爲你做這個)

由於Maysam提到你還需要使用SQL參數,以確保用戶不能對數據庫執行SQL注入攻擊,有很多關於如何執行此操作的指南。

編輯:

這會做你想要什麼,但我會建議你使用一個庫這樣的事情。

if (str.IndexOf("<script>", StringComparison.InvariantCultureIgnoreCase) > -1) 
      return true; 

有關MS防XSS庫信息:http://msdn.microsoft.com/en-us/library/aa973813.aspx

+0

可以幫助我建立我同時拒絕