2015-08-13 20 views
0

在過去的2天裏,我一直在廣泛閱讀關於保護ASP.NET應用程序的內容。然而,在將表單輸入插入到SQL數據庫之前或者在它們被髮送回瀏覽器之前,應該對它們進行編碼有矛盾的觀點。我認爲以前的意見對我來說更有意義,我將在服務器收到所有表單輸入後對其進行編碼,然後插入數據庫。不過,我對接下來會發生什麼感到困惑!在將Html字符串插入SQL數據庫之前對其進行編碼並安全地將其發回給瀏覽器是否安全

因此,讓我從創建它的時間開始直到它被髮送回瀏覽器。

步驟1

用戶輸入以下字符串:

string userString = "It's important to know that 1 > 0"; 

步驟2

一旦由串被編碼和在數據庫中插入所述服務器接收的。

string RenderedString = HttpUtility.HtmlEncode(userString); 

由於在數據庫中的字符串保存結果如下:

"It's important to know that 1 > 0." 

步驟3

我要呈現的字符串發送回瀏覽器,因爲它是那麼它會作爲html寫在網頁上,而不是由瀏覽器解析和呈現。其結果將是:

string StringResult = "It's important to know that 1 > 0"; 

我的問題是:我應該發送字符串返回到瀏覽器之前添加任何額外的「安全」一步還是不夠用3個以上的步驟?任何幫助將不勝感激?

回答

1

你的假設(存儲在數據庫中的字符串只發送回瀏覽器)是不正確的。

你可以做其他事情處理字符串,不指望他們以HTML編碼:

  • 搜索他們
  • 它們發送到Web服務
  • 處理他們在C#或Visual Basic
  • 使用他們的PDF文件和Excel電子表格

大多數軟件認爲字符串是未編碼。
MVC在將字符串發送到瀏覽器之前自動對HTML進行編碼。

+0

因此,您的建議是將字符串保存在數據庫中,然後在將它們發送到瀏覽器之前進行編碼。那是對的嗎? – Gloria

+0

是的,那是最好的方法。 – buffjape

1

我總是會保存沒有編碼的數據,因爲我可能需要以其他形式顯示它,例如:JSON。將編碼保存到數據庫對我來說意味着我將視圖邏輯放入數據模型中。

+0

因此,你的意思是在將數據插入數據庫之前不要對數據進行清理。 –

+1

我的驗證是在我的模型上,如果模型是無效的,那麼它完全被拒絕,我甚至不開始與數據庫的連接,但除此之外,我不需要對字符串進行任何類型的轉義因爲我使用了已經完成這項工作的實體框架。 –

相關問題