Как лучше сохранять невалидированные данные?

Допустим есть модель Post. Юзер переходит на страницу создания поста, вводит данные, которые не проходят валидацию и получает 422 ошибку. Как лучше сохранить данную информацию? Создать полиморфную таблицу с json полем "request". Или добавить поле "without_validation" в модель и сохранять такие промежуточные результаты, исключая их из всех запросов? Или другой способ. Цель - если юзер заполнял однажды форму, получил ошибку и ушел (что часто бывает, но делать проще проверку уже нельзя), чтобы эти данные, которые он заполнял, не потерялись и в следующий раз (когда он вернется через месяц) предстали перед ним.

Дополнительно:

Я на фронте в Local storage сохранял, при успешном добавлении или сбросе формы удалял, бэкэнд совсем не торогал.

  • Антон Антон, это сохранять в json файле на диске? Получается хранился только один файл на create форму. В принципе, я такое рассматривал только бд - там можно сделать полиморфную таблицу, привязать к юзеру/модели и удобно это потом использовать, в тч выводить в админке.
  • Простейший вариант это localstorage
    но он подразумевает что клиент использует тот же браузер
    Второй вариант сессия на сервере но тут возможен вариант что ее вычистят
    третий вариант это уникальная идентификация пользователя даже анонимного и неструктурированная таблица.
    Смысл такой
    id - guid
    uid - guid определяйте сами
    formid - что за форма, это что бы было универсально
    body - text просто текст который ваш код десириализует в json

    Логика простая ваш код на форме периодически сериализует данные, если пользователь ушел, то при возврате происходит десириализация. Когда данные заполнены и внесены в бд, то запись удаляется

     

    Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

     

      • Как лучше сохранять невалидированные данные?Есть ответ
      • 09.04.2024
      Ответить

      Для сохранения невалидированных данных в PHP, можно использовать функцию htmlspecialchars(), которая преобразует специальные символы в HTML сущности. Это позволяет избежать XSS-атак, когда пользователь вводит данные, содержащие скрипты или другие вредоносные элементы.

      Пример:

      Таким образом, если пользователь введет данные содержащие скрипты, они будут преобразованы в безопасный HTML код и не будут исполняться при выводе на страницу.

      Также, рекомендуется использовать параметризованные запросы при работе с базой данных, чтобы избежать SQL инъекций. Это можно сделать с помощью PDO или MySQLi.

      Пример с использованием PDO:

      Таким образом, следуя указанным рекомендациям, вы сможете безопасно сохранять невалидированные данные и защитить свой сайт от вредоносных атак.

      • Как лучше сохранять невалидированные данные?Есть ответ
      • 07.04.2024
      Ответить

      Сохранение невалидированных данных является важной задачей для многих веб-разработчиков. Невалидированные данные могут быть опасными, поскольку они могут привести к различным уязвимостям, таким как инъекции SQL, межсайтовый скриптинг (XSS) и другие виды атак. Поэтому важно правильно обращаться с такими данными и сохранять их безопасно.

      Существует несколько способов сохранения невалидированных данных, которые могут помочь уменьшить риски безопасности и защитить ваше приложение от атак. Ниже приведены некоторые из них:

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

      2. Использование подготовленных запросов: при сохранении данных в базу данных, рекомендуется использовать подготовленные запросы, которые позволяют отделить данные от запроса и предотвратить инъекции SQL. Подготовленные запросы помогут защитить ваше приложение от атак, связанных с внедрением SQL.

      3. Использование фильтрации данных: фильтрация данных перед их сохранением может помочь убедиться, что данные не содержат нежелательных символов или запросов. Например, можно использовать функции фильтрации, такие как htmlspecialchars() или mysqli_real_escape_string(), чтобы защитить данные от XSS и инъекций SQL.

      4. Шифрование данных: для повышения безопасности сохраняемых данных можно использовать шифрование. Шифрование поможет защитить конфиденциальные данные от несанкционированного доступа и использования.

      5. Установка правильных прав доступа: важно убедиться, что данные сохраняются в безопасном месте с правильными правами доступа. Например, можно ограничить доступ к базе данных только определенным пользователям или группам.

      6. Регулярное обновление и мониторинг: важно регулярно обновлять ваше приложение и мониторить его на наличие уязвимостей. Также рекомендуется проводить аудит безопасности для выявления потенциальных проблем и уязвимостей.

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

    Оставить комментарий