
Учебный кабинет показывает пользователю его сведения из учётной системы по запросу. Сайт не должен создавать самостоятельную постоянную базу этих бизнес-данных. При этом интерфейсу всё равно нужны учётная запись, связь с разрешённым владельцем и служебное состояние. Эти разные категории необходимо назвать, чтобы не обещать технически неопределённое отсутствие любых данных.
Составьте реестр категорий
Разделите данные учётной записи сайта, связь пользователя с объектом 1С, получаемое содержимое и технические события. Для каждой категории укажите назначение, место и срок жизни. Такой реестр позволяет увидеть, где фактически возникает копия, даже если разработчик не создавал отдельную таблицу документов.
Например, ответ может попасть в общий кэш или журнал исключения. Это тоже хранение, хотя его не видно в интерфейсе. Если запрет относится к бизнес-данным, соответствующие механизмы должны быть настроены согласованно. Нельзя утверждать «на сайте нет копий» только по отсутствию одной специально названной таблицы.
Требование нужно формулировать конкретно: не сохранять полученное содержимое постоянно, не помещать его в общий кэш, не логировать целиком. Допустимость временной обработки и служебных идентификаторов определяется отдельно. Технический разбор не заменяет организационные правила обращения с данными.
Связь пользователя с объектом 1С не берут из произвольного запроса
Вошедший пользователь должен получать только разрешённый ему набор. Браузер не может самостоятельно выбрать любой код организации и получить чужие документы. Сервер определяет допустимую связь по проверенному состоянию учётной записи и повторяет проверку на каждом запросе к объекту.
OWASP рекомендует проверять доступ на каждом запросе и не считать скрытие интерфейсных элементов защитой. В таком кабинете это особенно существенно: даже если список показывает только свои записи, прямой запрос другого идентификатора должен быть отвергнут. Успешный вход не даёт права на все данные источника.
Если у пользователя несколько разрешённых организаций, выбор должен ограничиваться подтверждённым списком. Смена контекста требует очистки прежнего отображаемого состояния и проверки нового. Нельзя оставить документ первой организации под заголовком второй из-за позднего сетевого ответа.
Источник должен возвращать минимально нужный набор
Запрашивайте данные по конкретному пользовательскому сценарию. Если экран показывает последние документы, ему не нужен полный архив всех контрагентов с последующей фильтрацией в браузере. Ограничение на стороне сервера уменьшает риск лишней передачи и упрощает проверку прав.
Формат ответа должен иметь понятные поля и ограничения объёма. Большой неподготовленный ответ может зависнуть в обработке или попасть в диагностический дамп. Если нужны страницы списка, договоритесь о пагинации и устойчивом порядке, не обещая неограниченную выгрузку в одном запросе.
Не передавайте браузеру служебные ключи доступа к 1С. Серверная интеграция и пользовательская сессия имеют разные роли. Клиент получает только разрешённые данные и действия в пределах кабинета, а секреты источника остаются в защищённой конфигурации соответствующего слоя.
Недоступная 1С должна быть нормальным состоянием интерфейса
Без постоянной копии сайт зависит от доступности источника. Если 1С не отвечает, нельзя показать старые сведения как свежие без согласованного права на кэш. Нужен понятный статус: данные сейчас недоступны, можно повторить или обратиться по предусмотренному каналу. Формулировка должна соответствовать фактической границе.
Задайте ограниченное ожидание и безопасный повтор. Бесконечный индикатор не помогает человеку и удерживает ресурсы. Повтор чтения обычно отличается по риску от повторения изменяющей операции; если кабинет умеет создавать или менять документы, их договор нужно проверять отдельно.
Не подменяйте ошибку пустым списком. «Документов нет» и «источник недоступен» имеют разный смысл. Пользователь может принять важное решение по пустому списку, поэтому технический сбой должен быть различимым, даже если публичное сообщение остаётся кратким.
| Состояние | Что показывать | Чего избегать |
|---|---|---|
| Ответ получен | Разрешённые текущие данные | Лишних объектов других владельцев |
| Нет записей | Честный пустой результат | Смешения с ошибкой источника |
| Источник недоступен | Понятное ограничение и повтор | Фиктивного успешного списка |
| Нет прав | Отказ по модели доступа | Выдачи данных ради удобства |
Проверьте все уровни кэширования
Приложение может не сохранять бизнес-данные в базе, но промежуточный сервер или браузер способен кэшировать ответ. Составьте карту фактических слоёв и настройте их в пределах требования. Особенно опасен общий кэш, ключ которого не учитывает пользователя или организацию.
Не делайте универсальное обещание полного отсутствия следов после просмотра. Браузерная память, сетевые буферы и операционные механизмы требуют конкретной модели угроз и политики. Для прикладной задачи важно доказать согласованные границы хранения, а не использовать абсолютную формулировку без проверки среды.
Если временный приватный кэш всё же разрешён для устойчивости, это должно быть явным изменением договора с указанным сроком и статусом данных. Нельзя вводить его незаметно как техническую оптимизацию, когда исходное требование запрещает копирование.
Журналы должны описывать события, а не содержимое документов
Для диагностики обычно нужны время, тип запроса, длительность и обезличенная причина ошибки. Полный ответ 1С может содержать сведения, которые не разрешено сохранять. Настройте обработку исключений так, чтобы случайный дамп не обходил ограничение хранения.
Используйте учебные данные для проверки журналирования. Вызовите ошибку формата и убедитесь, что её сообщение не включает весь полученный документ. Отдельно проверьте трассировку и системы мониторинга, если они существуют: автоматическая запись payload может происходить вне основного кода кабинета.
Служебная корреляция помогает найти запрос без раскрытия данных. Её срок жизни и область доступа тоже должны быть понятны. Не нужно сохранять постоянный пользовательский профиль в каждом техническом событии, если для диагностики достаточно ограниченного идентификатора операции.
Выход и смена пользователя
После выхода интерфейс должен очистить закрытое отображаемое состояние. Второй пользователь в том же браузере не должен увидеть прежний список до завершения своей проверки доступа. Это проверяется явным последовательным входом на учебных учётных записях, а не предположением о работе сессий.
Кнопка браузерного возврата может восстановить страницу из памяти. Определите, как приложение перепроверяет доступ и актуальность при возвращении. Серверный отказ на новый запрос не обязательно убирает уже показанное содержимое; нужен согласованный пользовательский сценарий.
Поздний ответ первого пользователя после выхода не должен попадать в состояние второго. Асинхронные запросы связывают с актуальной сессией и контекстом. Это не требует нового универсального механизма, если существующая архитектура уже предоставляет отмену или проверку версии состояния.
Что можно хранить служебно
Для работы кабинета часто нужны настройки интерфейса и подтверждённая связь учётной записи с источником. Их допустимость не следует автоматически из запрета бизнес-копий или из него не исключается. Каждую категорию обсуждают по назначению, минимальному объёму и сроку.
Не называйте внутренний код организации публичным пользовательским идентификатором. Он может быть чувствителен в контексте доступа и не должен служить единственным доказательством полномочий. Ссылка между системами хранится и проверяется в доверенном слое.
Если технически невозможно выполнить часть требования без дополнительного служебного состояния, это отмечают конкретно. Например, «нужна защищённая связь пользователя с разрешённым владельцем данных». Такая формулировка позволяет принять решение, не маскируя проблему общим обещанием.
Приёмка на двух учебных пользователях
Подготовьте пользователей А и Б с различимыми синтетическими записями. Проверьте обычный список, прямой запрос чужого объекта, смену контекста, выход, возврат и поздний ответ. Отрицательные проверки должны подтверждать отсутствие доступа, а не только отсутствие ссылки в меню.
Затем отключите учебный источник и проверьте сообщение, ограничение ожидания и повтор. Изучите разрешённые хранилища и журналы на предмет содержимого ответа. Если какой-то слой инфраструктуры недоступен для проверки, укажите его как конкретное ограничение вместо общего вердикта.
Принятый результат означает понятную границу: источник владеет бизнес-данными, кабинет получает только разрешённое, хранение соответствует договору, а сбой и отсутствие прав обработаны честно. Абсолютное обещание «данные нигде не остаются» без исследования всех слоёв не используется.
Проверка границы на двух организациях
Подготовьте учебных пользователей с разными разрешёнными наборами. В каждом ответе используйте различимую синтетическую запись. Сначала пройдите обычное чтение, затем отправьте прямой запрос чужого объекта. Сервер должен отказать независимо от того, есть ли ссылка в интерфейсе.
Затем смените организацию в пределах одного разрешённого пользователя, если такая функция существует. Задержите первый ответ и завершите второй. Поздние данные прежнего контекста не должны появиться под новым заголовком. Это проверяет изоляцию состояния наряду с серверными правами.
Для выхода и повторного входа используйте тот же браузер. Проверьте возврат назад и восстановление вкладки. Закрытый список не должен показываться следующему пользователю из старой памяти приложения до проверки его контекста.
Как проверить отсутствие постоянной бизнес-копии
Составьте перечень доступных для аудита хранилищ: прикладная база, серверный кэш, временные файлы, журналы и системы наблюдения. После учебного чтения проверьте, где появилось содержимое ответа. Не делайте вывод обо всей инфраструктуре по одному запросу к базе.
Если какой-то слой недоступен, укажите его конкретно. Например, отсутствие доступа к централизованному журналу означает непроверенную границу логирования, а не доказанное нарушение или доказанное отсутствие хранения. Остальные проверенные слои сохраняют самостоятельный результат.
Для ошибок формата проверьте диагностические сообщения. Полный ответ источника не должен попадать в исключение целиком, если это запрещено договором. Ошибку можно описать типом и корреляцией, сохраняя содержимое только в явно разрешённом учебном контуре.
Рабочая инструкция при сбое источника
Пользователь видит краткий статус недоступности и понятный повтор. Сотрудник поддержки видит время и тип неуспешного запроса без лишних персональных сведений. Разработчик может проследить границу отказа по технической корреляции. Эти три уровня не должны получать один и тот же сырой ответ.
Не советуйте пользователю многократно обновлять страницу без ограничения, если источник уже перегружен. Предусмотренный повтор должен учитывать состояние операции и не создавать лавину запросов. Чтение и изменение документов имеют разные риски, поэтому универсальная кнопка повтора должна соответствовать конкретному действию.
После восстановления 1С проверьте новый запрос и очистку статуса ошибки. Кабинет должен вернуться к обычному поведению без случайного использования старого закрытого содержимого. Такой опыт подтверждает устойчивость интерфейса в модели без постоянной копии.
Укажите, какие технические сведения остаются после чтения, и зачем они нужны. Минимальная служебная корреляция отличается от постоянной копии документов. Такое описание делает требование хранения проверяемым.
Связанные разборы
Для смежных решений пригодятся материалы: Разработка интернет-магазина с личным кабинетом. Общая интеграция с 1С задаёт состав доступных данных. Для чтения без постоянной копии дополнительно проверяются изоляция пользователей, временное хранение и отказ источника.
Вопросы по теме
Означает ли отсутствие таблицы, что данные не хранятся?
Нет. Нужно проверить кэш, журналы, промежуточные слои и браузерное состояние в пределах согласованного требования.
Можно ли выбирать код организации прямо в запросе?
Только из подтверждённо разрешённого набора с серверной проверкой. Сам переданный код не доказывает право доступа.
Документация и источники
- OWASP: проверка авторизации: Права проверяются для каждого запроса и объекта; интерфейсное скрытие не заменяет серверную проверку.
- Обмен 1С-Битрикс с 1С: Разделение импорта и экспорта CommerceML; правила частичного обновления нужно проверять в конкретном проекте.