У меня есть страница:
<input type="hidden" name="user.id" value="123" />
<input type="text" name="user.name" value="John" />
и действие:
public static void save(User user) {
user.save();
}
Воспроизведение загружает сущность пользователя из базы данных с помощью параметра user.id, привязывает параметры HTTP к объектуи действие сохраняет его.
Это нормально для доверенного пользователя, такого как администратор, но ненадежный пользователь может изменить параметры HTTP на:
?user.id=456&user.name=John
и, таким образом, отредактировать другой объект.
Я проверяю, изменил ли пользователь user.id, также добавляя user.id в сеанс, а затем проверяю его равенство.Это прекрасно работает, так как сессия подписана и не может быть изменена, но как я могу легко проверить много объектов на странице - например, при массовом обновлении?Или просто сделать это широко распространенным по умолчанию?
Я не хочу ставить 20 идентификаторов в сеанс, а затем проверять каждый идентификатор, если он равен параметру HTTP.Одно решение пришло мне в голову.Я бы поставил подписанный идентификатор в качестве токена каждой сущности и проверил бы его во время привязки.Как бы вы это реализовали?