Безопасно ли в новостной ленте, если идентификатор сообщения виден пользователю?

Я создаю ленту новостей на моем сайте. Я хочу захватить лайки и комментарии к конкретному посту. Моя основная реализация состоит в том, что я предоставляю идентификатор записи в качестве идентификатора кнопке «Мне нравится», которая вызывает метод для добавления записи в таблицу отображения post_like.

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

0

Решение

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

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

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

Другие решения

Если ваши идентификаторы не могут быть угаданы (то есть, если они случайным образом назначены из достаточно большого числового пространства, что только крошечная доля этого числового пространства могут быть действительными идентификаторами в любой момент времени), у вас все будет в порядке. Последовательные идентификаторы, конечно, можно легко угадать, просто взглянув на них.

С помощью случайные (т. е. «версия 4») UUID должно хватить. (И, что эквивалентно, любое случайное значение с энтропией не менее 122 бит тоже будет).

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

0

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

Но это будет сложный пользователь в основном вы также можете использовать долго sha1 или же md5 шифрование и сохранение этого хеша в отдельном столбце, и вы также можете своевременно обновлять хеш, используя задания крон. Поскольку пользователь не может угадать хеш других сообщений, используя хеш одного сообщения, поэтому в соответствии с вашими текущими реализациями хэширование user_id и сохранение их в db — хорошая идея, и вы также можете установить уникальный столбец хеша в своей таблице db. Расшифровка хэша не требуется, так как они не могут быть дешифрованы, и вы можете напрямую сравнивать их с тем, где находится cluase, при обработке запросов like и comment.

0
По вопросам рекламы [email protected]