Я создаю ленту новостей на моем сайте. Я хочу захватить лайки и комментарии к конкретному посту. Моя основная реализация состоит в том, что я предоставляю идентификатор записи в качестве идентификатора кнопке «Мне нравится», которая вызывает метод для добавления записи в таблицу отображения post_like.
Но метод / веб-сервис и идентификатор сообщения будут видны конечному пользователю в исходном коде. что может привести к фишинг-атаке и т. д. Как я могу защитить такие данные, чтобы пользователь не мог получить доступ к любому другому сообщению.
Если вы хотите избежать подделки ссылок для контроля доступа к другим публикациям, вам нужен какой-то тип хэша, а не идентификатор, некоторые решения могут быть следующими:
использовать те же хитрые телефонные карточки, что и другие сериализованные карты, номер карты — это объединение идентификатора с фиксированным количеством цифр и произвольно сгенерированного пароля, который также имеет фиксированное количество цифр.
Если ваши идентификаторы не могут быть угаданы (то есть, если они случайным образом назначены из достаточно большого числового пространства, что только крошечная доля этого числового пространства могут быть действительными идентификаторами в любой момент времени), у вас все будет в порядке. Последовательные идентификаторы, конечно, можно легко угадать, просто взглянув на них.
С помощью случайные (т. е. «версия 4») UUID должно хватить. (И, что эквивалентно, любое случайное значение с энтропией не менее 122 бит тоже будет).
Возможно, вы также захотите взглянуть на соответствующую тему предотвращение подделки межсайтовых запросов.
Вы должны правильно обработать запрос просмотра сообщения.
В вашей проверке PHP каждый раз, когда сообщение просматривается отдельно, что сообщение является общим с определенными или не входящими в систему пользователями.
Но это будет сложный пользователь в основном вы также можете использовать долго sha1
или же md5
шифрование и сохранение этого хеша в отдельном столбце, и вы также можете своевременно обновлять хеш, используя задания крон. Поскольку пользователь не может угадать хеш других сообщений, используя хеш одного сообщения, поэтому в соответствии с вашими текущими реализациями хэширование user_id и сохранение их в db — хорошая идея, и вы также можете установить уникальный столбец хеша в своей таблице db. Расшифровка хэша не требуется, так как они не могут быть дешифрованы, и вы можете напрямую сравнивать их с тем, где находится cluase, при обработке запросов like и comment.