LINUX.ORG.RU

Драма альтернативных браузеров


0

0

В свободное от работы время Михаль Залевски (Michal Zalewski) разработал небольшую программу, генерирующую "плохой" HTML-код. Создаваемые ею образцы предельно просты: никаких таблиц стилей, сценариев и тому подобных вещей. Попытка протестировать с их помощью ряд популярных браузеров дала удивительный результат: как сообщает разработчик, все они, кроме Microsoft Internet Explorer, регулярно падали. IE же стойко выдерживал издевательства в течение двух часов. Потенциальные уязвимости (в том числе, удаленное выполнение произвольного кода), подверженность DoS-атаке и внезапные "зависания" были обнаружены в Mozilla и Mozilla Firefox, Opera, Links и Lynx. Следует признать: несмотря на общую незащищенность, синтаксический анализатор HTML в Internet Explorer оказался на высоте. О мерах, которые планируют предпринять производители "альтернативных" браузеров, пока ничего не сообщается. (с linuxcenter.ru)

>>> Подробности

★★★★★
Ответ на: комментарий от paranoiac

>А он его проверял когда мозиллы не было. Он разве был виноват что мозилла кривая?

Нет, давай-ка, дорогой друкк краб, разбираться.

Существует спецификация языка гипертекстовой разметки HTML. Согласно этой спецификации вывод элементов, написанных на HTML, определяется однозначно.

Если страница не соответствует HTML, должна генерироваться какая-то ошибка и скорее всего показываться только та часть, которую удалось разобрать как "безошибочную".

Понятно, что браузер падать не должен. Это абсолютно точно.

Но и вывод не должен осуществляться на основе некоего "предугадывания а что там должно стоять".

Почему? Потому что хрен его знает как оно угадает. Допустим, я в одном месте забыл закрыть тэг, а во втором такой же забыл открыть. Вроде все верно, но изображение меняется. Если внутри есть перекрывающиеся тэги (которых не должно было быть, если бы я хотя бы закрыл тэг), изображение может сформироваться неверно, часть съехать и т.п.

Нехорошо, правда? И как искать? Напрашивается ответ - создать еще десяток валидаторов и потом проверять код валидатором, затем браузером...

Имхо проще изначально писать код правильно.

Ты предлагаешь решение, позволяющее писать код на коленке и не проверять его. Это неверно.

P.S. И что же за БЗД использует человек с такими взглядами? Ты и под рутом сидишь, наверно?

jackill ★★★★★
()
Ответ на: комментарий от jackill

>P.S. И что же за БЗД использует человек с такими взглядами?

MacOSX, наверное. :) У него звезды нет - он ответить тебе не сможет.

mikhail
()
Ответ на: комментарий от paranoiac

>И работаю я за Линуксом поверь мне не один год и не пять

Ты там повыше говорил про "БЗД"...

jackill ★★★★★
()
Ответ на: комментарий от jackill

>Страшно ie6sp1 - были дыры, отсутствовавшие в пятерке, но проявлявшиеся в шестерке.

ИМХО их исправляют быстрее, чем дыры пятой версии.

mikhail
()
Ответ на: комментарий от paranoiac2

Одна, но после того, как на нее этот апдейт попадет. После всестороннего изучения.

jackill ★★★★★
()

Думаю релиз firefox 1.0 отложится на некоторое время... ;-)

P.S. 0.9 - упал... ;-)

atrus ★★★★★
()
Ответ на: комментарий от yozhhh

> Где решение об установке каждого обновления принимается отдельно

apt-get update upgrade тоже запускаете по команде центра? :)

WindowsUser ★★
()
Ответ на: комментарий от yozhhh

> И уж тем более там выключены automatic updates. Ибо если этой дуре вздумается обновиться в момент составления квартального отчёта, и она вывалит BSOD... то админу там больше не работать

А, ну да-ну да. Потом какой-нибудь умник приносит "а-ля курникову" на дискетке и все начинают резко плакать. А виноват, конечно, МС. Вообще-то, Windows Update в больших организациях управляется централизованно (не знал? бывает...) и позволяет решать админу, надо ставить апдейт или нет

WindowsUser ★★
()
Ответ на: комментарий от KRoN73

> Проверять правильность кода браузером, всё равно что концентрацию синильной кислоты в растворе на вкус определять.

Человек, когда пишет страницу, проверяет, как она будет _выглядеть_ в браузере. А он должен о кривостях предупреждать.

init ★★★★★
()
Ответ на: комментарий от WindowsUser

> А, ну да-ну да. Потом какой-нибудь умник приносит "а-ля курникову" на дискетке и все начинают резко плакать. А виноват, конечно, МС. Вообще-то, Windows Update в больших организациях управляется централизованно (не знал? бывает...) и позволяет решать админу, надо ставить апдейт или нет

Тоже не дочитал до конца треда, а уже лезем с глупыми комментариями? Ну ничего, бывает... :)

Я только не понял, при чём тут Курникова. Это жалобы на жизнь, что ли? Или так просто, неупорядоченный поток сознания? Ты, кстати, в курсе, сколько процентов вирусов сейчас распространяется сейчас через дискетки и вообще носимые ЗУ? Не мокро в луже-то? :)

yozhhh ★★★
()
Ответ на: комментарий от WindowsUser

> apt-get update upgrade тоже запускаете по команде центра? :)

Где? На одном из 1000 компьютеров с виндой? Или на твоей домашней тачке? Ты всё заснуть не можешь или, наоборот, уже встал, но ещё не проснулся? Сходи умойся да кофейку выпей. Авось полегчает :)

yozhhh ★★★
()
Ответ на: комментарий от mikhail

btw, умники, подскажите, чо надо этому гавну (IE6+XP) сказать чтобы оно не тормозило на auto+wpad.dat и молча хавало его и делало то что просят как оно ыбло в ie4/5/5.5?

mumpster ★★★★★
()
Ответ на: комментарий от sergom

А известно ли вам уважаемый что стандарт HTML 4.x разрешает "терять" большую часть закрывающих тегов? Т.ч. "догадываться" о положении закрывающий тегов - это ОБЯЗАННОСТЬ броузера, совместимого с HTML4

dead_knight
()
Ответ на: комментарий от drish

> Konqueror рулит только по удобству использования и по скорости. А по подверженности багам он намного хуже IE. Постоянно падает,

На левых русских сайтах - иногда падает. Подтверждаю. Но не доходит и до 0.1% от общего количества просматриваемых сайтов. На моей памяти было всего пару раз. :)

Skull ★★★★★
()
Ответ на: комментарий от anonymous_incognito

> Надо будет его программку погонять на Konqueror'е.

Работает без сбоев. KDE 3.3.1 :)

Skull ★★★★★
()
Ответ на: комментарий от dead_knight

>Т.ч. "догадываться" о положении закрывающий тегов - это ОБЯЗАННОСТЬ броузера,

Браузер должен не догадыватся, а расставлять их в соответствии со спецификацией.

Orlangoor ★★★★★
()
Ответ на: комментарий от dead_knight

<html>
<body>
<table>
<tr>
<td>
trulala
<td>
alala
<table>
<tr>
<td>
ululu
</body>
</html>

Внимание, вопрос: где должен быть закрыт тег первой таблицы согласно стандарту HTML 4?

CybOrc
()
Ответ на: комментарий от CybOrc

там сказано "большая часть", то есть возможно это относится к мелочи типа <i> ...

правда, где расставлять - вопрос интересный, по хорошему - _сразу_ после открывающего (чтоб неповадно было...)

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Вот и корежат разные браузеры кривые страницы каждый по своему усмотрению, чтоб неповадно было... :)))

Правда, продвинутые верстатели кривых страничек возмущаются, почему в разных браузерах их убер-пага смотрится по-разному. ;)

CybOrc
()
Ответ на: комментарий от mikhail

> А ты, брат красноглазый?

Не, у меня часовой пояс сейчас другой :)

yozhhh ★★★
()
Ответ на: комментарий от WindowsUser

Точно - сначала надо посмотреть, что доступно. А перед этим нужно отредактировать списочек того софта, который я не желаю обновлять с репозитариев.

jackill ★★★★★
()
Ответ на: комментарий от WindowsUser

>А, ну да-ну да. Потом какой-нибудь умник приносит "а-ля курникову"

Несомненно, виноват windows. Позиционируется система как надежная, значит курниковы ей должны быть не страшны.

jackill ★★★★★
()
Ответ на: комментарий от dead_knight

>Т.ч. "догадываться" о положении закрывающий тегов - это ОБЯЗАННОСТЬ броузера, совместимого с HTML4

Он и догадывается. А вот об открывающихся тэгах и скобочках что скажешь?

jackill ★★★★★
()
Ответ на: комментарий от jackill

>А, ну да-ну да. Потом какой-нибудь умник приносит "а-ля курникову"

Несомненно, виноват windows. Позиционируется система как надежная, значит курниковы ей должны быть не страшны.

Ну, если под админом сидеть без антивируса...

mikhail
()
Ответ на: комментарий от CybOrc

11.2.1 Элемент TABLE Начальный тег: необходим, Конечный тег: необходим

Т.ч. тег </table> поставить ты должен сам

dead_knight
()
Ответ на: комментарий от sin_a

конечно мелочи:

9.3.1 Параграфы: элемент P Начальный тег: необходим, Конечный тег: не обязателен 11.2.3 Группы рядов: элементы THEAD, TFOOT и TBODY Начальный тег: не обязателен, Конечный тег: не обязателен 11.2.4 Группы столбцов: элементы COLGROUP Начальный тег: необходим, Конечный тег: не обязателен 11.2.5 Ряды: элемент TR Начальный тег: необходим, Конечный тег: не обязателен 11.2.6 Ячейки: элементы TH и TD Начальный тег: необходим, Конечный тег: не обязателен и т.д.

В общем как раз основные разметочные теги, как раз могут и не закрываться, а в таблице только закрывающий тег </table> является обязательным.

А вот что закрывать обярательно, так это в основном всякие <b>, <i> и т.д.

dead_knight
()
Ответ на: комментарий от CybOrc

>Внимание, вопрос: где должен быть закрыт тег первой таблицы согласно стандарту HTML 4?

К стандарту это не относится (так как закрывающий тег для элемента table обязателен), но по логике должен быть в конце, как и поступят любые браузеры.

Orlangoor ★★★★★
()

Кстати, судя по содержимому http://lcamtuf.coredump.cx/mangleme/gallery/ народ принялся активно тестировать не мозиллу, а ИЕ. В результате уже найдено по крайней мере два набора тэгов приводящих к краху ИЕ, и насколько я понял можно даже добиться исполнения кода в винде.

Karmadon
()
Ответ на: комментарий от Orlangoor

> К стандарту это не относится (так как закрывающий тег для элемента > table обязателен), но по логике должен быть в конце, как и поступят > любые браузеры.

В конце чего? HTML-файла? :)

yozhhh ★★★
()
Ответ на: комментарий от yozhhh

А это зависит от того что ты хочешь получить, например <table> <tr> <td> <td> <table> <tr> <td> </table> </table>

и ты имеешь таблицу в таблице, и эта запись будет полностью соответствовать стандарту HTML 4.01, и эсли какой броузер не сможет такое обработать, то это проблема ИСКЛЮЧИТЕЛЬНО БРОУЗЕРА.

dead_knight
()
Ответ на: комментарий от dead_knight

Другими словами, браузер обязан быть телепатом и угадывать, что подразумевал дизайнер :) И, если какой-то из браузеров криво отображает криво написанную страницу, то это проблема ИСКЛЮЧИТЕЛЬНО БРАУЗЕРА, а не дизайнера.

Тег p, говорите?

<p> tralala <table><!--content skipped--></table> <p> trululu

Где браузер в этом куске должен поставить закрывающий тег p (и, соответственно, отступ) - до table или после table?

CybOrc
()
Ответ на: комментарий от dead_knight

>А это зависит от того что ты хочешь получить, например <table> <tr> <td> <td> <table> <tr> <td> </table> </table>

А если я хочу <table> <tr> <td> <td> </table> <table> <tr> <td> </table> ?

jackill ★★★★★
()

Народ, а может реализована такая фича, что ты грузишь чью-то страничку, а на ней ошибки, выскакивает информация об ошибке. Затем из браузера запускается редактор, исправляешь ошибки (они подсвечиваются), после сохранения браузер воспринимает изменившуюся страничку, генерируется патч (универсальный, чтобы при незначительном изменении странички патч тоже работал). И можно прописать, чтобы каждый раз при заходе на эту страничку к хтмлу апплаился патч автоматически. Есть такое?

mikhail
()
Ответ на: комментарий от CybOrc

Фраза "закрывающие тег не обязателен" всего лишь означает, что допускается ДВА варианта использования этого тега. В соответствии с этим и обрабатываться они должи ДВУМЯ способами.

В данном случае, открывающи тег <p> без закрывающего тега сообщает о НАЧАЛЕ нового абзаца. Использование пары тегов <p> и </p> выделяет абзац целиком.

Boretz
()
Ответ на: комментарий от dead_knight

> А это зависит от того что ты хочешь получить, например <table> <tr> <td> <td> <table> <tr> <td> </table> </table>

и ты имеешь таблицу в таблице, и эта запись будет полностью соответствовать стандарту HTML 4.01, и эсли какой броузер не сможет такое обработать, то это проблема ИСКЛЮЧИТЕЛЬНО БРОУЗЕРА.

А ты сам-то своё творчество пробовал? Ну, попробуй с заполнением в IE и в мозилле и посмотри, что будет :)

<html><body>

Text0<table border=2>Text1<tr>Text2<td>Text3<td>Text4

<table border=3>Text5<tr>Text6<td>Text7</table>Text8</table> Text9

</body></html>

yozhhh ★★★
()
Ответ на: комментарий от vada

>Секретутка будет станицу пачить!

Нет. Если кто хочет патчить, идёт в edit-->page. Просто как в эксплорере внизу браузера сообщение об ошибке вылетает.

mikhail
()
Ответ на: комментарий от yozhhh

> Ты, кстати, в курсе, сколько процентов вирусов сейчас распространяется сейчас через дискетки и вообще носимые ЗУ?

Я не он ;-) Однако замечу, что такой способ распространения ещё иметт место. Тот же Klez я вычистил в одной организации, установил антивирусы, и антивирус сработал на дискетке с некоторым доморощенным софтом для внутреннего употребления. Блин, все копии были заражены и нормально не лечились, хорошо хоть нашлись исходники и перекомпилировали заново.

anonymous_incognito ★★★★★
()

Ничего всегда были патчи и пр. и кривые ссылки всегда были даже такие где IE падал!!!!!!!

zxbxt
()
Ответ на: комментарий от baka-kun

> Не тормози. Text1, Text2, Text5, Text6 -- это все нарушения стандарта.

Не больше, чем всё остальное в этом примере. Я их вставил только для того, чтобы показать, где что начинается и заканчивается.

yozhhh ★★★
()
Ответ на: комментарий от yozhhh

>> это все нарушения стандарта.

> Не больше, чем всё остальное в этом примере.

Не тормози. ;) Все остальное там в пределах стандарта и абсолютно однозначно интерпретируется.

baka-kun ★★★★★
()
Ответ на: комментарий от CybOrc

Извини, но если броузер не отображает правильно страницу СООТВЕТСТВУЮЩУЮ СТАНДАРТУ HTML 4.01 описанному W3C то это проблема ДЕЙСТВИТЕЛЬНО ИСКЛЮЧИТЕЛЬНО БРОУЗЕРА.
Если ИЕ неправильно работает с боксовой моделью CSS, то и говорят, что он неправильно с ней работает. А если кто то не может обработать незакрытые теги, которые я ИМЕЮ ПРАВО НЕ ЗАКРЫВАТЬ следуя описанному стандарту, то и это надо признать неправильной работой.

dead_knight
()
Ответ на: комментарий от yozhhh

Тебе скриншот прислать? ИЕ и Мозилла 1.7 отработали все именно так, как должены :)

Кстати у тебя в твоем примере ошибки батенька. Такой простой пример, а без ошибок написать не смог. Вот что значит красноглазый, а все туда же...

dead_knight
()
Ответ на: комментарий от dead_knight

Собственно, разговор начался о нестандартных усекновениях типа потери закрывающих тегов таблиц, дивов и т.д. Или я чего-то не понял?

То, что IE позволяет криворуким верстальщикам это делать - однозначное зло, ибо стандарт молчит о том, как отображать эту помойку. Следовательно, MS может ввести свой "стандарт" и регулярно менять его в сторону наименьшей совместимости. Так что проблема потерянных верстальщиками тегов, которые могут привести к неоднозначному толкованию ситуации браузером - проблема не браузера, а верстальщика.

PS HTML sux

CybOrc
()
Ответ на: комментарий от baka-kun

> Не тормози. ;) Все остальное там в пределах стандарта и абсолютно однозначно интерпретируется.

Признаюсь честно - стандарт в отношении обязательности или необязательности </td> и </tr> не читал, ибо профессионально html-кодингом не занимаюсь, а когда всё же кодю - стараюсь делать корректно, с закрывающими тэгами, а не как бог на душу положит. Ибо обязательность/необзательность - информация абсолютно лишняя, ничего не дающая при создании веб-страниц, а лишь забивающая голову и вносящая бардак в код. Так что, возможно, моё замечание и неверно. Но это моя принципиальная позиция - во всём должна быть однозначность и минимум бардака. А все послабления типа "хотите - ставьте, хотите - не ставьте" считаю вредными. Это - медвежья услуга всем.

yozhhh ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.