Insights / Технические материалы

Импорт данных профиля в черновик: сравнение, выбор и публикация

Обобщённая реализация импорта профиля из текста, CSV, статического HTML и общего JSON. Рассматриваются сравнение с текущими значениями, выбор полей для замены и отмены, а также разделение сохранения и публикации.

  • Web
  • Import
  • Security
Импорт данных профиля в черновик: сравнение, выбор и публикация
Содержание
  1. Проверка сохранения ручных правок на одном поле биографии
  2. Сначала определите поддерживаемые форматы входных данных
  3. Проверяйте кандидаты перед заменой существующих значений
  4. Разделяйте общий JSON и поддержку конкретных сервисов
  5. Не выводите сведения о квалификации или правах из импортированного текста
  6. Сохраняйте раздельные решения для сохранения и публикации
  7. Связанное обновление: открытие HTTPS-ссылок из событий публичного календаря
  8. Что подтверждено и какая приёмка предстоит

При переносе существующего профиля в другой редактор сначала сравните текущие значения с кандидатами импорта. В этом анонимизированном примере описаны границы между импортом данных и публикацией профиля.

Проверка сохранения ручных правок на одном поле биографии

Измените биографию вручную и импортируйте другой вариант. Проверьте сохранение невыбранных полей, просмотр замены и восстановление оригинала после отмены. Затем сравните черновик с публичной страницей: один импорт не должен менять публикацию.

OWASP:Проверка формата, значений и длины ввода

Сначала определите поддерживаемые форматы входных данных

Помимо исходной обработки текста, CSV и статического HTML, процесс теперь читает файл общего формата JSON и позволяет скачать шаблон. Разбор вставленного содержимого или файла отличается от обращения к URL для получения данных. Экспорт в формате конкретного сервиса, автоматическое получение по URL, перенос изображений или аудио, динамические страницы и API внешних сервисов не завершены.

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

Проверяйте кандидаты перед заменой существующих значений

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

Разделяйте общий JSON и поддержку конкретных сервисов

Интерфейс показывает состояние поддержки 7 сервисов активности. Возможность читать данные общего формата не означает, что профиль можно получить напрямую по URL каждого сервиса. Для неподдерживаемых URL предлагается вставить содержимое для импорта. Отображение состояния всех 7 сервисов не означает, что для каждого реализован отдельный экспорт или интеграция API.

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

Не выводите сведения о квалификации или правах из импортированного текста

Формулировки в биографии или на внешней странице сами по себе не подтверждают квалификацию, принадлежность, категорию или лицензию. Отделяйте описательные тексты, которые можно импортировать как кандидаты, от сведений, требующих проверки личности или заявления. Изменения внешних данных не обновляют и не публикуют автоматически профиль, подтверждённый владельцем.

Сохраняйте раздельные решения для сохранения и публикации

Применение кандидатов импорта, сохранение черновика и обновление публичного снимка — разные действия. Приёмка должна также охватывать конфликты при сохранении; успешное сохранение не означает, что профиль опубликован. Перед публикацией связанных ссылок, в том числе URL публичного календаря, владелец должен проверить их значения; личные заметки не следует включать в публичные данные.

Связанное обновление: открытие HTTPS-ссылок из событий публичного календаря

Отдельное от импорта профилей обновление редактора добавляет HTTPS-ссылки к событиям публичного календаря. Событие открывает назначение напрямую в новой вкладке; событие без URL отображается без активной ссылки. Проверяйте формат URL, отклоняйте встроенные учётные данные и ограничивайте длину ввода. Добавляйте noopener noreferrer и указывайте открытие новой вкладки в доступном имени.

В связанных формах также удалили ненужное поле заголовка у интервалов доступности для сотрудничества и поля личных заметок. Проверены изменения базы данных, CI, production-развёртывание и отображение проверочных данных. Приёмка, при которой владелец входит в учётную запись, сохраняет реальное событие и публикует его, ещё не подтверждена.

Границы импорта и ссылок календаря Это отдельные функции редактора. Приёмка сохранения и публикации вошедшим пользователем не подтверждена.
  1. Импорт профиля Пользователь проверяет и редактирует поддерживаемые форматы. Сохранение и публикация — разные действия.
  2. Ссылка в публичном календаре HTTPS-ссылка открывается в безопасной новой вкладке. События без ссылки не являются интерактивными.

Что подтверждено и какая приёмка предстоит

Подтверждены реализация, интеграция и production-развёртывание импорта из текста, CSV, статического HTML и общего JSON. Однако полный сценарий с реальным пользователем — от импорта и редактирования до сохранения и проверки опубликованного результата — ещё не тестировался. Более широкая идея автоматически создавать весь профиль по URL сервиса активности также не завершена.

О границах публикуемого CSS см. Безопасный пользовательский CSS и версии публичных тем. О границах входа см. Жизненный цикл сеансов в разных сервисах.