SORU
17 Kasım 2008, PAZARTESİ


İstemci Tarafında HTML Yeniden/sterilize

Dış kaynak etki alanları arası istekleri ile dolu ekran ve sadece görüntülemek için emin olmak istiyorum "güvenli" içerik.

Prototip kullanabilir String#stripScripts kod blokları kaldırmak için. Fakat onclick onerror gibi işleyicileri hala orada.

Herhangi bir kütüphane ya da en azından var

  • şerit komut dosyası blokları
  • DOM işleyicileri, öldürmek
  • kara listede etiketleri (örn: embed object) kaldırın.

Yani herhangi bir ilgili bağlantılar ve örnekler orada JavaScript?

CEVAP
10 Ocak 2009, CUMARTESİ


Utanmaz fiş: iyice gözden geçirilmiş istemci tarafı html dezenfektanı caja/plugin/html-sanitizer.js bkz.

Beyaz liste, kara listeye değil, ancak beyaz listeler CajaWhitelists başı olarak yapılandırılabilir


Eğer tüm etiketleri kaldırmak istiyorsanız, şunları yapın:

var tagBody = '(?:[^"\'>]|"[^"]*"|\'[^\']*\')*';

var tagOrComment = new RegExp(
    '<(?:'
    // Comment body.
      '!--(?:(?:-*[^->])*-- |-?)'
    // Special "raw text" elements whose content should be elided.
      '|script\\b'   tagBody   '>[\\s\\S]*?</script\\s*'
      '|style\\b'   tagBody   '>[\\s\\S]*?</style\\s*'
    // Regular name
      '|/?[a-z]'
      tagBody
      ')>',
    'gi');
function removeTags(html) {
  var oldHtml;
  do {
    oldHtml = html;
    html = html.replace(tagOrComment, '');
  } while (html !== oldHtml);
  return html.replace(/</g, '<');
}

İnsanlar bir öğe oluşturmak için size söyleyeyim, ve innerHTML atama ve innerText textContent ve aciz bir varlık olsun. Bunu yapma. Savunmasız <img src=bogus onerror=alert(1337)> eğer düğüm asla DOM bağlıysa bile onerror işleyicisi çalışır beri enjeksiyon XSS.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Call Me Howard

    Call Me Howa

    18 AĞUSTOS 2012
  • ODN

    ODN

    26 Kasım 2006
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008