Лучшие практики для именования URL страниц редактирования

У меня есть веб-сайт, который содержит кампанию, и каждая кампания имеет несколько опросов.

Если бы я редактировал кампанию, у меня был бы URL-адрес

campaign/edit/1

Если я хочу изменить опрос в кампании, у меня есть URL-адрес

campaign/edit/1/survey/edit/3

Моя страница будет получать данные для кампании с идентификатором 1 и опроса с идентификатором 3.

Хотя это работает, мне интересно, существует ли на самом деле какое-то соглашение, которое было бы лучше подходит для этого, или если URL-адрес, как это, в порядке?

2 ответа

Решение

Хотя это вполне приемлемо для небольшого веб-сайта, где ставки низкие, существуют другие способы сделать это более безопасными. Например, обратите внимание, что если вы переходите к записи Instagram в Интернете, URL-адрес " https://www.instagram.com/p/BeB6HbqA8TEYRi7-I0X3neNZ2tw0irKoVdUCbg0 ", где строка после / p / является идентификатором изображения, Это хеш, а не число. Они могли бы сделать URL-адрес идентификатором номера изображения, но это может привести к проблемам, когда вы можете предсказать идентификатор изображения на основе того, когда оно было размещено относительно других изображений и т. Д., Таким образом, подвергая часть серверной части, которую вы не делаете. обычно хотят выставить.

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

Таким образом, у веб-фреймворков есть способы указать, что вы хотите, чтобы объекты базы данных генерировали UUID (случайный хеш), и использовать его в качестве ключа (например , UUIDField в Django). Затем вы можете использовать UUID в URL-адресе и, таким образом, запретить кому-либо генерировать возможный URL-адрес.

То, что вы делаете, прекрасно. Но вы также можете сделать это проще, направляя URL-адреса на разные страницы. Удачного кодирования!

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