The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

25.09.2013 09:04  Разработчики Mozilla представили html2dom, альтернативу innerHTML

Разработчики Mozilla попытались создать удобную альтернативу innerHTML для вставки статичных HTML-блоков без необходимости предварительного ручного разбора строковых данных. Метод innerHTML очень популярен благодаря своей простоте, но он чреват потенциальными проблемами безопасности при подстановке непроверенного внешнего ввода.

Прототип альтернативной системы оформлен в виде библиотеки html2dom, которая на основе строки с HTML генерирует JavaScript-код для корректного создания элементов DOM, т.е. заменяет единый вызов innerHTML на серию простых обращений к DOM. Указанный подход позволяет избежать запуска HTML-парсера для длинных HTML-строк, что положительно влияет на производительность и позволяет защититься от XSS-атак через подстановку в обрабатываемый через innerHTML ввод нежелательных тегов.



  1. Главная ссылка к новости (https://blog.mozilla.org/secur...)
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: html, javascript, web
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 10:17, 25/09/2013 [ответить] [показать ветку] [···]     [к модератору]
  • –12 +/
    ха якобы проще избежать инжекции - путем использования JS-крапа, чем громоздк... весь текст скрыт [показать]
     
     
  • 2.71, Sabakwaka (ok), 03:02, 26/09/2013 [^] [ответить]     [к модератору]  
  • +/
    А ты намерен 171 избежать инжекции 187 Каким путём Предоставлением для по... весь текст скрыт [показать]
     
     
  • 3.73, Аноним (-), 14:32, 27/09/2013 [^] [ответить]     [к модератору]  
  • +/
    о, есть десятки проектов на тему, вы удивитесь из них - добрая треть концентрир... весь текст скрыт [показать]
     
  • 1.2, MidNighter (ok), 10:18, 25/09/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +6 +/
    Разработчики фреймворка GWT наоборот утверждают что innerHTML лучше чем доступ через DOM. хз уже кому верить.

    http://www.gwtproject.org/doc/latest/DevGuideUiCellWidgets.html

    These widgets are designed to handle and display very large sets of data quickly. A cell widget renders its user interface as an HTML string, using innerHTML instead of traditional DOM manipulation. This design follows the flyweight pattern where data is accessed and cached only as needed, and passed to flyweight Cell objects.

     
     
  • 2.65, vn971 (ok), 18:53, 25/09/2013 [^] [ответить]    [к модератору]  
  • +/
    может быть потому что GWT уже сам всё проэскэйпил?
     
  • 2.70, Аноним (-), 00:27, 26/09/2013 [^] [ответить]     [к модератору]  
  • +/
    GWT овнище тормозное, не сильно сложный проект с несколькими окнами а-ля проводн... весь текст скрыт [показать]
     
     
  • 3.76, A.N. Onim (?), 17:04, 29/09/2013 [^] [ответить]     [к модератору]  
  • +/
    Я не фанат GWT, но 40 МБ приложение показывает только экстремальную кривизну рук... весь текст скрыт [показать]
     
  • 1.3, Аноним (-), 10:47, 25/09/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    Библиотека исправляет разметку. По крайней мере, незакрытые теги успешно закрывает.
     
     
  • 2.4, annulen (ok), 11:58, 25/09/2013 [^] [ответить]    [к модератору]  
  • +4 +/
    Они говнокод специально поощряют?
     
     
  • 3.12, pro100master (ok), 14:32, 25/09/2013 [^] [ответить]    [к модератору]  
  • +3 +/
    в смысле "говнокод"? С спецификации явно указано, когда и где можно не закрывать теги. Вы наверное и не читали вовсе, но осуждаете?:)
     
     
  • 4.34, Аноним (-), 17:54, 25/09/2013 [^] [ответить]    [к модератору]  
  • +3 +/
    Тогда нафига что-то "исправлять", простите?
    Я думал, речь идет о тегах, которые нужно закрывать, а они не закрыты.
     
     
  • 5.69, Аноним (-), 22:44, 25/09/2013 [^] [ответить]    [к модератору]  
  • +/
    А у нас все браузеры идеально поддерживают спецификацию? Хотя бы распространенные? Хоть один?
     
  • 2.72, Аноним 2 (?), 03:11, 26/09/2013 [^] [ответить]    [к модератору]  
  • +1 +/
    Учи мат часть. innerHTML всегда автоматом закрывал теги
     
  • 1.5, ILYA INDIGO (ok), 12:09, 25/09/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    >Метод innerHTML далёк от оптимальности, небезопасен и его использование считается плохим стилем.

    Что за бред?! Кем считается? Говнокодерами, или NIH-ерами?
    innerHTML он быстрее цепочек createElement Apendchild когда нужно просто вставить статический текст в тег с минимальным парсингом и соответственно doc.outerHTML=doc.innerHTML когда нужно просто убрать шелуху, например из ссылки сделать текст (убрать анкер) или тому подобное.
    Просто быстро и безопасно, при этом кросбраузерно.

     
     
  • 2.61, Аноним (-), 18:40, 25/09/2013 [^] [ответить]    [к модератору]  
  • –1 +/
    innerHTML является костылём, не описан в стандартах, и навязан Microsoft в Internet Explorer. То что его добавили в остальные браузеры для совместимости с IE погоды не делает.

     
     
  • 3.63, arisu (ok), 18:47, 25/09/2013 [^] [ответить]     [к модератору]  
  • +1 +/
    вообще-то, в документе от whatwg innerHTML ещё как описан вместе с outerHTML и ... весь текст скрыт [показать]
     
     
  • 4.66, Аноним (-), 18:54, 25/09/2013 [^] [ответить]    [к модератору]  
  • –2 +/
    В whatwg скорее констатация фактического положения, некий стандарт де-факто. Официальный http://www.w3.org/TR/DOM-Parsing/ пока на стадии черновика.
     
     
  • 5.68, arisu (ok), 20:30, 25/09/2013 [^] [ответить]    [к модератору]  
  • +3 +/
    ага, официально у нас HTML5 не особо есть — однако никого это не останавливает.
     
     
  • 6.74, kurokaze (ok), 19:38, 28/09/2013 [^] [ответить]    [к модератору]  
  • +/
    Да, этот мир несовершенен. Теперь ты знаешь это
     
  • 3.67, Crazy Alex (ok), 19:39, 25/09/2013 [^] [ответить]    [к модератору]  
  • +/
    Да начхать кто придумал полезную возможность. Доступна всем - что еще надо?
     
  • 1.7, Аноним (-), 14:02, 25/09/2013 [ответить] [показать ветку] [···]     [к модератору]  
  • +5 +/
    Ну конечно, html распарсеный JS в серию JS вызовов изменяющих DOM он будет быстр... весь текст скрыт [показать]
     
  • 1.10, лох (?), 14:24, 25/09/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Супер "новость".
    Это, несомненно, самая важная новость дня, нет -- новость года. Премию автору! Во-первых, она революционно изменит весь подход к программированию в браузере, заставив отказаться от innerHTML и вообще всего-всего, кроме String.fromCharCode().
    Во-вторых, без сомнения, произойдёт революция в браузерах, innerHTML и все прочие ранее "полезные" вещи будут заменены на библиотеку html2dom.
    И конечно же, эта новость революционно изменит жизнь юзеров. Предвижу, что теперь в формах нельзя будет ничего ввести, так как у всех по умолчанию введённый в форму текст обязательно вставляется в страницу с помощью innerHTML.
    И вообще, я не понимаю, какого хрена ещё в браузерах не внедрили интерпретируемый x86-ассемблер с обязательной встроенной защитой от XSS? Надо бы написать...
     
     
  • 2.62, Аноним (-), 18:42, 25/09/2013 [^] [ответить]     [к модератору]  
  • –1 +/
    Заставит использовать стандартные методы, а не костыль, добавленный в Internet E... весь текст скрыт [показать]
     
     
  • 3.64, arisu (ok), 18:50, 25/09/2013 [^] [ответить]     [к модератору]  
  • +1 +/
    то есть, HTML5 не использовать, потому что он не стандарт а в HTML5 это свойств... весь текст скрыт [показать]
     
  • 2.75, kurokaze (ok), 19:40, 28/09/2013 [^] [ответить]    [к модератору]  
  • +/
    >какого хрена ещё в браузерах не внедрили интерпретируемый x86-ассембле

    Ты хоть на ассемблере писал то? Спрашиваю потому как у тебя типично хейтерский пост получился

     
  • 1.16, Аноним (-), 15:22, 25/09/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Опять внешние фреймворки ....
     
     
  • 2.18, arisu (ok), 15:26, 25/09/2013 [^] [ответить]    [к модератору]  
  • –3 +/
    > Опять внешние фреймворки ….

    это какие? DOMParser, который в стандарте? или страшный паттерн visitor, которым обрабатывается выхлоп этого парзера?

     
     
  • 3.19, Аноним (-), 15:31, 25/09/2013 [^] [ответить]    [к модератору]  
  • +/
    Парадигмы усложняющие DOM дерево, хватает одного только JQuery .... который разрос
     
  • 1.23, Аноним (-), 16:12, 25/09/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    в прототипе используют обычный innerHTML , обходят элементы используя DOM и строят JS.
    непонятно зачем это может быть нужно.
     
     
  • 2.60, Аноним (-), 18:39, 25/09/2013 [^] [ответить]    [к модератору]  
  • +/
    Стабильней работать точно не будет
     
  • 1.28, angra (ok), 16:57, 25/09/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +4 +/
    Благодаря безмозглому переводчику-фантазеру действительно сложно понять о чем на самом деле новость и для чего нужна эта библиотека.
    Данная либа НЕ подключается к готовому сайту наподобие jquery, knockout или еще что-то. Она НЕ предназначена для вызовов из js кода. Она НЕ нужна для статического HTML. Она используется для создания js кода. А уже созданный ею код вставляется программистом на страницу вместо использования innerHTML и строки текста с HTML шаблоном, в который подставляются пользовательские данные. Этой либе нет необходимости быть кроссбраузерной, так как использоваться она будет только на компе разработчика, а не клиентвов. Кроссбраузерным должен быть код, который она генерирует.
    Надо отметить, что либа создает код, который использует document.createDocumentFragment(), то есть не делает типичную ошибку тех, кто создает ноды напрямую в документе и удивляется почему innerHTML оказывается быстрее.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor