Bootstrap 版型安全性更新

 

Bootstrap 是受到前端開發歡迎的版型架構,在 Drupal.org 也是排名前段的版型(目前安裝使用數超越了一直在第一名的 Zen)

不過就在 11 月 3 日這天,Drupal 官方發出了安全性通知,在 Drupal 7 版本的 Bootstrap 有著 XSS 的問題,建議所有使用 Bootstrap 的使用者盡快更新。

The theme does not sufficiently filter potential user-supplied data when it's passed to certain templates can which lead to a Persistent Cross Site Scripting (XSS) vulnerability.

有問題的版本是 Bootstrap 7.x-3.7 以前的版本,如果你目前使用了這些版本,請盡快更新到 Bootstrap 7.x-3.8 

仔細看看 Bootstrap 所更新的程式碼,最主要就是在 common.inc 裡頭,加上了一個運用 D7 API filter_xss() 的函式,為輸入的資料做 XSS 的預防處理

  1. /**
  2.  * Filters HTML to prevent cross-site-scripting (XSS) vulnerabilities.
  3.  *
  4.  * Very similar to core's filter_xss(). It does, however, include the addition
  5.  * of the "span", "div" and "i" elements which are commonly used in Bootstrap.
  6.  *
  7.  * @param string $string
  8.  * The string with raw HTML in it. It will be stripped of everything that can
  9.  * cause an XSS attack.
  10.  * @param array $allowed_tags
  11.  * An array of allowed tags.
  12.  *
  13.  * @return string
  14.  * An XSS safe version of $string, or an empty string if $string is not
  15.  * valid UTF-8.
  16.  *
  17.  * @see filter_xss()
  18.  */
  19. function _bootstrap_filter_xss($string, array $allowed_tags = NULL) {
  20. if (is_null($allowed_tags)) {
  21. $allowed_tags = array(
  22. // Inline elements.
  23. 'a',
  24. 'cite',
  25. 'em',
  26. 'i',
  27. 'span',
  28. 'strong',
  29.  
  30. // Block elements.
  31. 'blockquote',
  32. 'code',
  33. 'div',
  34. 'ul',
  35. 'ol',
  36. 'li',
  37. 'dl',
  38. 'dt',
  39. 'dd',
  40. );
  41. }
  42. return filter_xss($string, $allowed_tags);
  43. }

這個例子對於開發者來說相當的重要,如果所開發的模組當中,有提供使用者輸入文字的需求,以作為前端顯示的資料時,需要仔細思考是否要加上 XSS 的過濾處理。