Я создаю динамический веб-сайт, который использует HTML, CSS, JavaScript и PHP в качестве серверной части. В настоящее время я размещаю свой веб-сайт локально, используя кроссплатформенный XAMPP. Обратите внимание, что я не использую никаких библиотек или фреймворков, кроме jQuery. Теперь я пытаюсь отобразить на главной странице несколько сообщений, которые можно поставить лайк или прокомментировать, не переходя на отдельную страницу. Поскольку существует более одного сообщения, нам обязательно необходимо определить, с каким сообщением взаимодействуют и какой идентификатор сообщения, прежде чем отправлять запрос на сервер.
Самый простой подход, который я использовал. найденный способ реализовать это, заключается в использовании атрибута data-* для хранения идентификатора каждого сообщения. Но атрибут data-* можно легко подделать с помощью инструментов разработчика. Например, злоумышленник может изменить идентификатор первого сообщения на идентификатор другого сообщения, и это не будет работать должным образом. Это заставило меня прийти к выводу, что атрибутам data-* наряду с другими данными на стороне клиента нельзя напрямую доверять.
Вот почему я придумал другой подход к использованию обработчика запросов. чтобы сохранить и получить все идентификаторы сообщений в формате JSON, а затем проанализировать этот JSON, чтобы получить идентификатор сообщения, используя индекс элемента связанного сообщения. Но здесь есть одна проблема: что, если пользователь добавит или удалит элемент сообщения из дерева DOM? Порядок идентификаторов сообщений в проанализированном JSON и порядок соответствующих элементов в дереве DOM не совпадают. В результате это тоже не работает.
За последние несколько дней это доставило мне много хлопот, поскольку я пытался найти разные решения, но ничего не помогало. . Итак, я попробовал выполнить поиск в Google, задать вопросы моделям искусственного интеллекта, таким как ChatGPT, Gemini, посмотреть видеоуроки на YouTube, но нашел мало контента по этому поводу, и все они используют атрибут data-*, который, конечно, недостаточно продвинут и недостаточно безопасен.
Я рассмотрел возможность использования JS-прокси, чтобы предотвратить изменение атрибута data-* вандалистами (как предложил ChatGPT), и использование MutationObserver для обнаружения любых изменений, внесенных в дерево DOM. Но я не уверен, что это правильный способ сделать это. Итак, я спрашиваю, как лучше всего реализовать такую функцию, невосприимчивую к любому виду вандализма и угроз безопасности, в моем сценарии.
Дополнительно Хотя я знаю, что гиганты социальных сетей, такие как Facebook или Instagram, не реализуют эту функцию так, как это делают небольшие веб-сайты, я все же был бы признателен за любую информацию о том, как они могут сделать это на своих веб-сайтах. Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/788 ... n-a-php-en
Как можно реализовать расширенную функцию «Нравится», оставить комментарий или подобную функцию на веб-сайте с поддержко ⇐ Jquery
Программирование на jquery
1722106386
Anonymous
Я создаю динамический веб-сайт, который использует HTML, CSS, JavaScript и PHP в качестве серверной части. В настоящее время я размещаю свой веб-сайт локально, используя кроссплатформенный XAMPP. Обратите внимание, что я не использую никаких библиотек или фреймворков, кроме jQuery. Теперь я пытаюсь отобразить на главной странице несколько сообщений, которые можно поставить лайк или прокомментировать, не переходя на отдельную страницу. Поскольку существует более одного сообщения, нам обязательно необходимо определить, с каким сообщением взаимодействуют и какой идентификатор сообщения, прежде чем отправлять запрос на сервер.
Самый простой подход, который я использовал. найденный способ реализовать это, заключается в использовании атрибута data-* для хранения идентификатора каждого сообщения. Но атрибут data-* можно легко подделать с помощью инструментов разработчика. Например, злоумышленник может изменить идентификатор первого сообщения на идентификатор другого сообщения, и это не будет работать должным образом. Это заставило меня прийти к выводу, что атрибутам data-* наряду с другими данными на стороне клиента нельзя напрямую доверять.
Вот почему я придумал другой подход к использованию обработчика запросов. чтобы сохранить и получить все идентификаторы сообщений в формате JSON, а затем проанализировать этот JSON, чтобы получить идентификатор сообщения, используя индекс элемента связанного сообщения. Но здесь есть одна проблема: что, если пользователь добавит или удалит элемент сообщения из дерева DOM? Порядок идентификаторов сообщений в проанализированном JSON и порядок соответствующих элементов в дереве DOM не совпадают. В результате это тоже не работает.
За последние несколько дней это доставило мне много хлопот, поскольку я пытался найти разные решения, но ничего не помогало. . Итак, я попробовал выполнить поиск в Google, задать вопросы моделям искусственного интеллекта, таким как ChatGPT, Gemini, посмотреть видеоуроки на YouTube, но нашел мало контента по этому поводу, и все они используют атрибут data-*, который, конечно, недостаточно продвинут и недостаточно безопасен.
Я рассмотрел возможность использования JS-прокси, чтобы предотвратить изменение атрибута data-* вандалистами (как предложил ChatGPT), и использование MutationObserver для обнаружения любых изменений, внесенных в дерево DOM. Но я не уверен, что это правильный способ сделать это. [b]Итак, я спрашиваю, как лучше всего реализовать такую функцию, невосприимчивую к любому виду вандализма и угроз безопасности, в моем сценарии.[/b]
Дополнительно Хотя я знаю, что гиганты социальных сетей, такие как Facebook или Instagram, не реализуют эту функцию так, как это делают небольшие веб-сайты, я все же был бы признателен за любую информацию о том, как они могут сделать это на своих веб-сайтах. Спасибо.
Подробнее здесь: [url]https://stackoverflow.com/questions/78802209/how-can-an-advanced-like-comment-or-similar-feature-be-implemented-on-a-php-en[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия