簡體   English   中英

純文本字段驗證可防止XSS攻擊

[英]Plain text field validation for protection against XSS attack

我們的應用程序中有一些純文本字段,我們試圖防止XSS。 例如,供用戶評論帖子的評論字段(純字段)。 不應期望用戶具有更改格式的能力,但他們應該能夠以純文本形式編寫任何內容,包括不同的語言,特殊字符,例如@,&,',*等。我們也可以不允許使用“ < “和“>”。

因此,考慮到這一點,如果我在服務器端(Java)中檢查輸入String並通過驗證而失敗,用戶應該使用“>”還是“ <”,就足夠了嗎? 會暴露出任何安全隱患或限制嗎?

public boolean isValid(String value) {
  if (value == null) {
    return true;
  }
  // Setting an arbitrary large number (should be enough for any article/text)
  if (value.length() > 50000) {
    return false;
  }

  return !value.contains(">") && !value.contains("<");
}

通常,輸入驗證不足以抵御XSS。 這個問題缺乏足夠的細節來說明在這種特定情況下是否可以利用,但是無論哪種方式,僅依賴輸入驗證都不是一個好主意。

如果您打算將其作為針對XSS的通用措施來實現,以針對整個應用程序中的多個視圖,則它肯定會失敗。

考慮輸入諸如" onclick="alert(1)" x="javascript:alert(1)作為href等等。 而且我們甚至都沒有提到使用<script> var myvar = {{variable}}; </script>的視圖模板的最終情況<script> var myvar = {{variable}}; </script> <script> var myvar = {{variable}}; </script>等。 這是一堆無盡的蠕蟲。

真正防止XSS的唯一方法是根據寫入的上下文輸出(html,屬性,javascript等)實施適當的輸出編碼。即使那樣,您仍然必須注意javascript:以及將內容直接寫入Javascript上下文。

暫無
暫無

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

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