Ограничить прямое перенаправление пользователей на другую страницу путем редактирования URL-адреса

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

где пользователь находится в profile.php, когда пользователь щелкает ссылку редактирования сообщения, которая находится на той же странице, а затем перенаправляет на editpost.php? edit = 4, сообщение с идентификатором 4 позволяет пользователю редактировать.

проблема: когда пользователь вмешивается в URL-адрес, редактируя его как editpost.php, тогда как мы можем не позволить пользователю редактировать post.php просто введя в адресную строку пользователем

В editpost.php убедитесь, что человек имеет право редактировать профиль, на который ссылается переданное значение.

Dave 09.08.2018 17:28

Моя первая мысль - иметь какой-то токен, уникальный для каждого редактирования, которое должно присутствовать для доступа к странице. Файл cookie, параметр URL и т. д., Если они недоступны, пользователи не могут получить доступ к странице.

Critical Error 09.08.2018 17:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
140
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот самые простые вещи, которые, я думаю, вы можете сделать, чтобы улучшить свои страницы:

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

  2. Уникальные случайные идентификаторы: вместо отображения идентификатора автоинкремента (который легко угадать) вы можете создать еще один строковый столбец в базе данных и назначить случайный уникальный идентификатор для каждого сообщения. В вашем сценарии запросите базу данных на основе этого уникального столбца, а не столбца первичного идентификатора. Если пользователь находится на edit.php?uid=abz-723-random, он / она не сможет угадать следующий доступный идентификатор, чтобы попробовать.

Также можно использовать некоторые типы токенов. Однако использование токена не позволяет пользователю легко обновлять страницы / разделять страницу. Если у вас мало опыта работы с токенами, я не рекомендую их.

спасибо за ваш ответ и помощь мне в улучшении, и у меня есть еще одно сомнение, как не разрешить пользователям редактировать страницу edit.php, отредактировав url edit.php? uid = abz-723-random

Krishna 10.08.2018 11:37

Боюсь, что нельзя запретить пользователям редактировать URL в адресной строке. Случайный идентификатор не позволяет пользователю угадать «следующий действительный идентификатор». Если они вводят неверный id, вы должны вернуть страницу с ошибкой.

Hieu Le 10.08.2018 11:48

Сначала измените URL-адрес редактирования сообщения

editpost.php?=edit=4

к

editpost.php?edit=4

затем используйте метод Get, чтобы получить идентификатор или номер сообщения редактирования, например

$editpostid=$_GET['edit'];

после этого запустите свой запрос mysqli с условием где id = '$ editpostid' . Дайте мне знать, если вы не понимаете

извините за мою ошибку, и мой вопрос в том, как не разрешить пользователю перейти на страницу editpost.php, отредактировав URL-адрес editpost.php? edit = 4

Krishna 10.08.2018 11:30

Простите Кришну за непонимание. Есть идеи или нет?

Afzal 10.08.2018 18:34

Другие вопросы по теме