Рубрики
Без рубрики

Будьте бдительны

Некоторое время назад Chrome сломал в Интернете, отключив диалоги Alert (), Подтверждение () и recavel () от … С меткой JavaScript.

Некоторое время назад Chrome сломал сеть, отключив alert () , Подтверждение () и rasfor () Диалоги из перекрестных ифреймов. Обоснованием было то, что «текущий UX сбивает с толку и ранее привел к подделкам, где сайты притворяются, что сообщение поступает от Chrome или другого веб -сайта»; Удаление функции считалось предпочтительным для исправления UX.

Но законное использование тоже пострадало. Пользователи Codepen , широко используемый сайт обмена кодами, соучрединный Крисом Койером, внезапно обнаружил что они не смогли использовать эти функции в своих проектах, так как CodePen запускает ваш код внутри перекрестного IFRAME, чтобы защищать атаки xss . Последовали отчеты с других сайтов, и в последующем хаосе изменение было откатился до 2022 года Анкет

Скрыто в ответах на Твит Койера был Удивительное утверждение от Домениной Деникола, инженера в команде Chrome:

Лучше всего, чтобы такие учебные сайты были готовы к конечному состоянию, где они полностью удалены с веб -платформы.

Чего ждать?

Чтение намерение удалить Поток подтверждает, что это действительно позиция Chrome: блокировка диалогов (включая onbeforeunload ) были ошибкой, а их будущее удаление – это свершившийся факт .

После i твитнул Что касается ситуации на прошлой неделе, моя вкладка «Уведомления» стала босхинским адским пейзажем, поэтому я не решаюсь написать этот пост. Но есть несколько аспектов в этой истории, которые слишком важны для нас, чтобы не говорить. Это не просто история о нелюбимых API, это история о власти, дизайне стандартов и владеющая платформой – и она заставляет меня бояться за будущее Интернета.

Onramps

Дэн Абрамов из Facebook указал что изменения обдумывали многие учебные пособия по программированию. Эмили Старк из Google Предлагается Они должны использовать <Диалог> Элемент вместо этого. На данный момент мы зацелимся из -за того, что <Диалог> достаточно ошибочно, что Denicola Плавал Удаление из спецификации – или что Предлагаемое MDN запасное Для браузеров, которые не поддерживают, это не кто иной, как оповещение – и вместо этого подумайте, как это будет выглядеть в реальной жизни.

Часто, когда я преподаю люди в веб -разработке, они начинают изучать JavaScript, создавая простую игру, угадающая игру в этом направлении:

function game() {
  let number = Math.ceil(Math.random() * 100);
  let guess = prompt(`Guess a number between 1 and 100`);

  guess = Number(guess);

  while (guess !== number) {
    if (guess < number) {
      guess = prompt(`Too low! Guess again`);
    } else {
      guess = prompt(`Too high! Guess again`);
    }

    guess = Number(guess);
  }

  alert(`That's right! The number was ${number}`);
}

game();

Это довольно просто, но в течение нескольких строк кода студенты подвергаются многим незнакомым концепциям:

  • Типы данных (строки против чисел и преобразование между ними)
  • Функции, как встроенные, так и те, которые вы пишете сами
  • Петли и заявления IF-ELSE
  • Операторы

Это популярный урок, и даже предвещает будущие дискуссии об алгоритмах (самые умные ученики вскоре интуитивны, что они могут «выиграть», проведя бинарный поиск), но это сложно – легко на час. Представьте себе, что прежде чем они смогут завершить его, они должны были узнать о доме, обработке событий и асинхронном программировании. Педагоги тяготеют к блокировке APIS диалога по причине Анкет

Неспособность понять Почему эти API настолько ценны в образовательном контексте, неизбежны, если вы Не считайте учителей частью вашего избирательного округа При разработке стандартов. Клише (и лишь частично точнее) сказать, что в Интернете были лучшие onramps для разработчиков, но есть истина, стоящая за ностальгическим ворчанием: обучаемость веб -платформы уже давно важна для его успеха. Мы повредим это на нашу опасность.

Скрытые сигналы

«Первичный сигнал» Chrome использует, чтобы определить, можно ли что -то безопасно удалить с веб -платформы, является количеством затронутых просмотров страниц. Функция, появляющаяся на 0,001% просмотров страниц, считается «небольшим, но нетривиальным». (Cross-Origin Alert находится на расстоянии около | 000,006% , значительно выше этого порога; с одинаковым оригином фигура 50x выше Still.)

Легко переоценить то, что вы можете количественно оценить, особенно если вы Google. Но не все, что считается использует Некоторая функция отображается в данных, когда данные являются преимущественно публичными производственными веб-сайтами. Обучение является одним из таких случаев. Есть другие.

Например, у меня было несколько опытов, в котором хорошо расположенный оповещение был единственным способом проверить гипотезы во время отладки. В идеальном мире у всех нас есть хорошо укомплектованные лаборатории устройств, и мы можем удаленно осматривать наш код, где бы он ни работал, независимо от того, насколько это неизбежно. Реальность не всегда такая любезная.

Даже когда мой код работает так же, как и задумано – иногда это происходит – я, вероятно, достигнут оповещение Прежде чем добавить сложную обработку ошибок, если я строю что -то для себя или своих коллег, и я ожидаю, что ошибки будут редкими событиями.

И исследователи безопасности часто используют оповещение продемонстрировать уязвимости. (Да, в будущем они могли бы использовать что -то менее краткое и менее заметное, как console.log , но в то время как литература на годы мгновенно выйдет на срок, если alert исчез.)

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

Поломка

По словам Эмили Старк, эксперта по безопасности в команде Chrome, поломка – это то, что часто случается в сети.

Но если это правда, это в значительной степени Потому что хрома. Долгое время «не сломайте Интернет», считалось чем -то вроде Главная директива по стандартам работы. Напомним #Smooshgate: предложение добавить сгладить Метод в Array.prototype Оказалось, что это нарушающее изменение, потому что древняя версия Mootools, все еще используемая горсткой сайтов, добавила свой собственный несовместимый сглаживать . Неутешительно Некоторые разработчики утверждали, что нарушение сети было приемлемым, но TC39 серьезно относился к своей обратной совместимости и в итоге оказался переименованием сглаживать к плоский вместо. Матиас Google Bynens написал :

Как выясняется, «не сломайте Интернет» – это номер один Принцип дизайна Для HTML, CSS, JavaScript и любой другой стандарт, который широко используется в Интернете.

На этот раз подход был довольно более кавалере.

Разумные люди могут не согласиться с балансом приоритетов при рассмотрении нарушений изменений, но хорошо быть четким глазами в отношении того, что означает «поломка». Один из многих анекдотов, которые я слышал после изменений в перекрестном оригинальном предупреждении выделился :

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

Что, если Firefox больше не был вариантом, либо потому, что мозилла, страдающая наличными, перестала развивать ее, либо потому, что они реализовали теперь стандартизировано Специальные изменения? Мы не говорим о веб -сайте Space Jam неправильно, мы говорим о том, что люди не могут использовать Основные услуги в сети. Частое значение в дискуссии на прошлой неделе заключалось в том, что владельцы веб-сайтов могли просто реорганировать свои приложения, чтобы не использовать блокирующие диалоги, независимо от стоимости этого. Но многие сайты больше не поддерживаются, и они не менее ценны из -за этого.

Мы не можем нормализовать отношение к тому, что побочный ущерб – это цена прогресса, даже если мы принимаем предпосылку – чего я не делаю – что удаляет API, как оповещение представляет прогресс. Несмотря на все свои недостатки, Интернет, как правило, согласен быть стабильной платформой, где инвестиции, сделанные сегодня, будут выдержать испытание временем. Мир, в котором веб -сайты рассматриваются как по своей природе переходные объекты, где API, на которые мы обычно полагаемся сегодня, может быть отменен как нежелательный багаж от завтрашних спецификаций, – это мир, в котором сеть уже проиграла.

Что если предупреждение … хорошо, на самом деле?

Нам часто напоминают использовать встроенные элементы формы в Интернете вместо воссоздания флажков и кнопок с

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

Тем не менее, когда дело доходит до диалогов, уродливое положение рассматривается как ошибка, а не как функция. Почему? Как Хейдон Пикеринг Покладывает это :

Использование alert (), rasfor () и sonform () в MVP является самым близким большинством разработчиков, чтобы обеспечить доступные диалоги. Хром, удаляя их, просто вырезает этот шаг. Разработчики могут сразу же построить свои собственные недоступные, недоступные диалоги

В плохие старые времена поведение оповещение Было несколько противно – это было бы сосредоточено на рассмотрении вкладки и помешает вам пройти. Спасибо Годы тяжелой работы , это уже не так, в той степени, в которой я бы спорил оповещение во многих случаях лучше, чем все, что вы бы собрали вместе.

Там являются Проблемы безопасности с перекрестными ифреймами. Я по -прежнему не убежден, что удаление является лучшим решением, чем улучшение дизайна таким образом, чтобы их происхождение яснее.

Кому принадлежит Интернет?

Распространенным ответом на Kerfuffle на прошлой неделе был «Использование Firefox». Но это не решение. Несмотря на то, что изменение было предложено хромом (намерение удалить предшествовало любому обсуждению с другими поставщиками браузеров), Firefox в конечном итоге поддерживал его. Это все, что нужно, чтобы что -то стало «стандартом» – поддержкой двух поставщиков, и заявила о том, что никто не заявил.

Поставьте иначе: когда дело доходит до веб -стандартов, браузеры называют исключительно выстрелы.

Всякий раз, когда я подвергал сомнению мудрость того или иного предложения, мне сказали, что я должен просто участвовать в обсуждениях стандартов – они прямо на GitHub! Но открытость ничего не значит без силы, чтобы влиять на изменения, а браузеры обладают всей силой. Это должно поразить нас как странного – W3C Приоритет избирательных округов Явно утверждает, что потребности пользователей и авторов (то есть разработчиков) должны рассматриваться как более высокий приоритет, чем потребности импеллеров (то есть поставщиков браузеров), однако более высокие приоритетные избирательные округа находятся во власти более низких приоритетных. ( разработчики Chrome утверждают, что они действуют в интересах пользователей в этом случае, но эта нить от Майка Шерова ..

Между тем, мы, кажется, не учимся у прошлого. Если оповещение Это честная игра для удаления, то и каждый API, который мы добавляем на платформу, если будущие стюарды Интернета считают его вредными. Учитывая это, вы могли бы подумать, что мы расширим площадь поверхности платформы с особой осторожностью; Вместо этого мы Добавление API в головокружительную скорость , к почти гарантированному ущербу его будущей стабильности.

Учитывая почти-монопольный контроль Chrome на рынке браузеров, я искренне обеспокоен тем, что все это значит для будущего Интернета. Рекламная компания не должна иметь такого большого влияния на то, что принадлежит всем нам. Я не знаю, как исправить процесс стандартов, чтобы он был более репрезентативным для разнообразия заинтересованных сторон Интернета, но я все больше убежден, что нам нужно это выяснить.

Оригинал: “https://dev.to/richharris/stay-alert-d”