Какие технические детали следует программиста веб-приложения, рассмотреть, прежде чем сделать общедоступный сайт?

Какие вещи должны программист реализует технические детали веб-приложение, рассмотреть, прежде чем сделать общедоступный сайт? Если Джефф Этвуд можете забыть о как HttpOnly куки, карты, и подделка межсайтовых запросов all в то же site, что главное я могу забыть, а?

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

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

Кроме того, я'м ищу что-то более конкретное, чем просто расплывчатое "и веб-стандартов" в ответ. Я имею в виду, язык HTML, JavaScript и CSS через HTTP довольно много, учитывая, особенно, когда я've уже указано, что вы'повторно профессиональным веб-разработчиком. Так что выходить за эти рамки, стандарты Which? В каких обстоятельствах и почему? Дать ссылку на стандарт's спецификации.

Решение

Идея здесь заключается в том, что большинство из нас должен знать already степени, что в этом списке. Но там как раз может быть один или два пункта, вы не'т действительно посмотрел назад, Дон'т полностью понять, или может быть даже никогда не слышали. Интерфейс и пользовательский опыт

  • Помните, что браузеры непоследовательно внедрение стандартов и убедитесь, что ваш сайт хорошо работает во всех основных браузерах. Как минимум тест на недавнем геккон движок (в Firefox), а в WebKit движка (сафари и некоторые мобильные браузеры), хром, поддерживаемых т. е. браузеры (воспользоваться приложение совместимость образы VPC), и опера. Также рассмотрим, как браузерах сделать ваш сайт в разных операционных системах.
  • Подумайте, как люди могут использовать сайт помимо основных браузерах: сотовые телефоны, программы чтения с экрана и поисковые системы, например. &ампер;mdash; не какой-доступность информации: вай и Section508, мобильная разработка: MobiForge.
  • Постановка: развертывание обновления, не затрагивая пользователей. Иметь одно или более испытаний или промежуточных сред, доступных для реализации изменений архитектуры, кода или подметание содержимое и убедиться, что они могут быть развернуты в контролируемым образом, не нарушая ничего. Есть автоматизированный способ развертывания утвердил изменения в живой сайт. Это наиболее эффективно реализуется в сочетании с использованием системы контроля версий (Git, Subversion и т. д.) и механизм автоматической сборки (АНТ, Нант и др.).
  • Дон't дисплей недружественный ошибки напрямую к пользователю.
  • Дон'т положить пользователей' адресов электронной почты в виде обычного текста, так как они заспамят до смерти.
  • Добавьте атрибут атрибут rel="на вес"` в пользователем созданные ссылки чтобы избежать спама.
  • Строить хорошо продуманные ограничения на свой сайт - Это также принадлежит по безопасности.
  • Научиться делать прогрессивное улучшение.
  • Перенаправление после поста если этот пост был успешным, чтобы предотвратить обновление от повторной отправки.
  • Дон'т забудьте взять доступность во внимание. Это's всегда хорошая идея, и в определенных обстоятельствах он'ы законное требование. Вай-Ария и стандарт WCAG 2 полезные ресурсы в этой области.
  • Читать Дон'т заставить меня думать. Безопасность
  • Она's не много, чтобы переварить, но руководство по разработке OWASP в Словении покрывает безопасности веб-узла сверху вниз.
  • Знаю про инъекции, особенно SQL-инъекций и как это предотвратить.
  • Никогда не доверяйте ввод данных пользователем, ни чего-либо другого, что приходит в запросе (который включает файлы cookie и скрытые поля формы значения!).
  • Хэш-паролей с помощью соль и использовать различные соли для строк, чтобы предотвратить Rainbow-атаки. Использовать алгоритм хеширования, таких, как осуществляется (проверенные временем) или Scrypt (даже сильнее, но новее) (1, 2), для хранения паролей. (Как Безопасно Хранить Пароль). В НИСТ также одобряет PBKDF2 для хэширования паролей", и это'ы ФИПС, утвержденным в .Чистый (подробнее здесь). Избежать используя MD5 или семьи ша напрямую.
  • Дон'т попытаться придумать свои собственные system необычные проверки подлинности. Это'ы такая легкая вещь, чтобы сделать так в тонком и непроверяемые способы и вы бы'т даже знаю, что это пока after вы'вновь взломали.
  • Знать правила обработки кредитные карты]28. (См. этот вопрос и)
  • Использовать SSL и TLS/протокол HTTPS для любых сайтов, где чувствительные вводе данных (например, данные, личную информацию, данные кредитной карты). Позвольте'ы шифрования это бесплатный центр сертификации, который может помочь.
  • Предотвращения угона сессии.
  • Избежать кросс сайт скриптинг (межсайтовый скриптинг).
  • Избежать кросс запросу сайт подделок (CSRF атак).
  • Избежать На Основе Clickjacking.
  • Сохранить вашу систему(ы) до даты с последними патчами.
  • Убедитесь, что соединение с базой данных обеспечивается.
  • Держите себя в курсе последних методов атак и уязвимостей, влияющих на вашу платформу.
  • Читал Браузер Google Безопасности Справочник.
  • Читать веб-приложение хакер'справочник с.
  • Рассмотрим принцип наименьших привилегий]38. Попробуйте запустить приложение-сервер не root. (пример котяра)
  • Поставить атрибут rel="и noopener noreferrer-то" на всех пользователей-предоставляются ссылки с цель=то"настроек" В, чтобы предотвратить JavaScript на целевую страницу перенаправлять вашу страницу где-то еще, например, поддельную страницу входа. Подробнее
  • Рассмотреть возможность использования строгая содержимого политика безопасности. Производительность
  • Реализовать кэширование в случае необходимости, понимать и использовать кэширования http правильно, а также в HTML5 Манифест.
  • Оптимизация изображений - Дон'т использовать 20 КБ изображения для повторяющегося фона.
  • Сжимать содержимое для скорости, см. кодом Brotli, gzip/сдуваться (<удар>сдуется лучше</удар и GT;).
  • Объединять/объединить несколько стилей или несколько файлов скрипт для уменьшения количества подключений браузера и улучшить способность gzip для сжатия дублирования файлов.
  • Взгляните на Yahoo и исключительную производительность сайте, много хороших рекомендаций, включая улучшение внешней производительности и их [YSlow] инструмент48 (требует Firefox, сафари, хром или Опера). Кроме того, страница Google скорость (использовать с расширением браузер) - еще один инструмент для профилирования производительности, и это тоже оптимизирует ваши изображения.
  • <удар>использовать изображение CSS спрайты для мелких связанные изображения панели инструментов (см. "по минимизации HTTP-запросов" и точка)</удара>
  • Использовать изображение SVG спрайты для небольших связанных изображений панели инструментов. Раскраски SVG-это сложновато. Об этом можно прочитать здесь.
  • Занят веб-сайтов, следует рассмотреть разделение компонентов между доменами. Конкретно...
  • Статического контента (картинки, CSS, Javascript и вообще контент, который не'т должны иметь доступ к куки) должны идти в отдельном домене который не использует файлы cookie, потому что все куки для домена и его поддоменов отправляются при каждом запросе к домену и его поддоменам. Одним хорошим вариантом здесь является использование сети доставки контента (CDN), но рассмотрим случай, когда то, что CDN может не по включая альтернативные инвестиции в иностранные или местные копии, которые могут быть поданы.
  • Минимизировать общее количество HTTP-запросов, требуемых для браузера, чтобы отобразить страницу.
  • Выберите [двигатель] шаблон(http://garann.github.io/template-chooser/) и Render/предварительно скомпилировать его с помощью задач-бегунов, как Gulp или Grunt
  • Убедитесь, что есть фавикон.файл ICO в корень сайта, т. е./фавикон.Ико. [Браузеры автоматически запросит его](http://mathiasbynens.be/notes/rel-shortcut-icon), даже если значок не упоминается в HTML вообще. Если у вас нет/фавикон.Ико`, это выльется в большое 404s, слив трафика вашего сервера. SEO (поисковая оптимизация)
  • Вставлять "поисковиков" и URL-адреса, т. е. использовать example.com/pages/45-article-title "вместо" example.com/index.php?page=45
  • При использовании # для динамического контента изменить # на#!, а затем на сервере $_REQUEST["и _escaped_fragment_ на"] то, что Googlebot использует вместо #!. Другими словами, ./#!страницы=1 будет ./?_escaped_fragments_=страницы=1. Кроме того, для пользователей, которые могут использовать ФФ.B4 или хрома, истории.pushState ({с"фу" и:"в баре"}, "около" и " Ну./?страницы=1 с"); - Это прекрасная команда. Так что даже если адресная строка изменилась страница не перезагружается. Это позволяет использовать ? вместо#!, чтобы сохранить динамический контент, а также сообщить серверу, если вы напишите ссылку, что мы после этой страницы, и AJAX не нужен, чтобы сделать еще один дополнительный запрос.
  • Дон'т использовать ссылки, которые говорят, что "Нажмите здесь". Вы'вновь тратить SEO возможности и это делает вещи более трудным для людей, для чтения с экрана.
  • Иметь XML карта сайта, желательно в папку по умолчанию /sitemap.xml.
  • Использовать <ссылка отн=с"каноническое" и ... />, когда у вас есть несколько URL-адресов, которые указывают на тот же контент, этот вопрос также может быть рассмотрен в Google для веб-мастеров инструменты.
  • Использовать инструменты Google для веб-мастеров и Бинг Вебмастер инструменты.
  • Установить аналитика в самом начале (или с открытым исходным кодом инструмент анализа, как веб).
  • Ноу-хау robots.txt и спайдеры двигателя поиска работы.
  • Перенаправление запросов (используя 301 перемещен навсегда) просим www.example.comвexample.com (или наоборот), чтобы предотвратить разделение рейтинга Google между двумя сайтами.
  • Знаю, что там можно плохо себя пауков там.
  • Если у вас не текстовый контент выглядят в Google'ы Карта сайта расширения для видео и т. д. Есть некоторые хорошие сведения об этом в Тим Фарли'ы ответить. Технологии
  • Понимаю, на HTTP и такие вещи, как, сделать, пост, сессии, куки, и что значит быть "без гражданства-то".
  • Написать свое в XHTML/HTML-код и УСБ по спецификации W3C и убедитесь, что они проверка. Цель здесь состоит, чтобы избежать режимов совместимости браузера и в качестве бонуса делает его гораздо легче работать с нетрадиционными браузеры, такие как программы чтения с экрана и мобильных устройств.
  • Понять, как код JavaScript обрабатывается в браузере.
  • Понять, как код JavaScript, таблицы стилей и другие ресурсы, используемые вашей страницы загружаются и рассмотреть их влияние на кажущуюся производительность. В настоящее время широко рассматривается как уместно переместить скрипты на дно из ваших страниц с исключениями, как правило, такие вещи, как аналитика приложений или HTML5 прокладок.
  • Понять, как JavaScript в песочнице работает, особенно если вы собираетесь использовать фреймы.
  • Помните, что JavaScript может быть отключен, и поэтому "Аякс" является расширением, а не базовый. Даже если большинство обычных пользователей оставить его на Теперь, помните, что тега NoScript становится все более популярным, мобильных устройствах может не работать как ожидалось, и Google выиграл'т запускать большинство приложений JavaScript при индексации сайта.
  • Узнать разница между 301 и 302 редиректы (это тоже СЕО вопроса).
  • Узнайте, сколько вы можете о вашей платформы развертывания.
  • Рассмотреть возможность использования таблица стилей сброс или нормализуется.в CSS.
  • Рассмотреть JavaScript фреймворков (например, с jQuery, в MooTools, прототип, Додзе или Юи 3), которая позволит спрятать большое браузере различия при использовании JavaScript в DOM манипуляции.
  • Принимая производительность и JS фреймворками вместе, рассмотрите возможность использования услуг, таких как в Google API библиотеки для загрузки рамок так, что браузер может использовать копию базы уже кэшируются, а не скачивание дубликат с вашего сайта.
  • Дон'т изобретать колесо. Прежде чем делать что-либо искать компонент или пример, как это сделать. Есть 99% шанс, что кто-то сделал это и выпустил ОС версия кода.
  • С другой стороны, Дон'т начать с 20 библиотек, прежде чем вы'вэ даже решили, что ваши потребности. Особенно на клиентских веб-ресурсах, где это's почти всегда в конечном итоге более важно, чтобы держать вещи легким, быстрым и гибким. Исправлены ошибки
  • Понимаю, вы'будете тратить 20% своего времени кодирования и 80% от его поддержания, поэтому код соответственно.
  • Создать хорошее решение для создания отчетов об ошибках.
  • Есть система для людей, чтобы связаться с вами с предложениями и критикой.
  • Документ, как приложение работает для будущего вспомогательного персонала и людей, выполняющих техническое обслуживание.
  • Делать частые резервные копии! (И убедитесь, что эти резервные копии функциональная) Стратегия восстановления, а не только стратегию резервного копирования.
  • Использовать системы контроля версий для хранения ваших файлов, такие как подрывной, подвижный или ГИТ.
  • Дон'т забывайте выполнять приемо-сдаточные испытания. Фреймворки, такие как Селена может помочь. Особенно если вы полностью автоматизировать тестирование, возможно, используя инструмент непрерывной интеграции, такие как Дженкинс.
  • Убедитесь, что у вас достаточно протоколированием на месте с использованием фреймворков, таких как к log4j, такой как log4net или log4r. Если что-то пойдет не так на вашем сайте, вы'll необходимо узнать, что.
  • При входе убедитесь, что вы захватить как обрабатываются исключения, и необработанные исключения. Отчет/анализ результатов отчет, как это'МР показать вам, где ключевые вопросы на вашем сайте. Другие
  • Реализовать как на стороне сервера и на стороне клиента, мониторинг и аналитика (одна должна быть проактивной, а не реактивной).
  • Использовать услуги, такие как UserVoice и домофон (или любых других аналогичных инструментов), чтобы постоянно оставаться на связи с вашими пользователями.
  • Выполните Винсент Дриссенмодель ветвления в Git Много чего пропущено не обязательно потому, что они'повторно не полезные ответы, а потому, что они'вэ слишком подробная, вне области, или пойти немного слишком далеко для тех, кто хочет получить представление о вещи, которые они должны знать. Пожалуйста, не стесняйтесь редактировать это, я, вероятно, пропустил некоторые вещи, или сделал какие-то ошибки.
Комментарии (19)