簡體   English   中英

文本框的 Javascript 注入攻擊預防

[英]Javascript injection attack prevention for textboxes

說我有一個 textBox 和一個屬性來獲取和設置它的值:

public SomeText
{
   get { return HttpUtility.HtmlEncode(textBox.Text); }
   set { textBox.Text = HttpUtility.HtmlEncode(value); }
}

我使用 HtmlEncode 來防止 Javascript 注入攻擊。 在考慮之后,雖然我認為我只需要 getter 上的 HtmlEncode。 setter 僅供系統使用,外部用戶無法訪問。

這樣對嗎?

幾點;

第一的:

你真的應該只在你顯示它們時編碼值,而不是任何其他時間。 通過在從框中獲取值以及粘貼時對它們進行編碼,最終可能會弄得一團糟,只要有人編輯這些值,情況就會變得越來越糟。 在大多數情況下,在保存到數據庫時,您不應該對值進行編碼(防止 HTML/Javascript 注入 - 當然,您確實需要防止 SQL 注入),尤其是在以后可以編輯該值的情況下。 在這種情況下,您實際上需要在加載回時對其進行解碼……而不是再次對其進行編碼 但是再次; 僅在顯示時進行編碼要簡單得多(包括顯示以供編輯,順便說一句)

第二:

HtmlEncode防止注入 HTML - 它可以包含一個<script>塊,它會運行 Javascript,真的。 但這也可以防止與 Javascript 無關的惡意 HTML。 但是防止 Javascript 注入幾乎是另一回事; 也就是說,如果您可能曾經在 javascript alert('%VARIABLE');顯示用戶輸入的內容alert('%VARIABLE'); 你必須在那里做一種與你正在做的完全不同的編碼。

是的。 您只需要對您從用戶那里接受的字符串進行編碼,並且必須顯示在您的頁面中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM