Я думаю, что это немного слабый, есть ли способ, которым я мог бы предоставить более безопасный способ, чем этот.
Вы должны определить «безопасный» на основеваше приложение.Требования к общедоступному веб-сайту, продающему книги, с частной библиотекой, в которой хранятся конфиденциальные тома, с любыми другими приложениями между ними совершенно различны.
Как минимум, вы должны сделать следующее -
- Убедитесь, что bookID на самом деле является целым числом и находится в ожидаемом диапазоне.
- Убедитесь, что вы связываете bookid в параметризованном SQL-запросе - это предотвращает SQL-инъекцию.
- Показывает страницу «Книга не найдена», если книгу не удается найти
Для общедоступного веб-сайта достаточно вышеуказанного.Вы на самом деле хотите, чтобы люди открывали ваши книги, поэтому, если кто-то изменяет bookID, вас это не должно волновать.
Для защищенной библиотеки вам придется сделать гораздо больше.
- Убедитесь, что URL-адрес защищен в web.xml, поэтому только аутентифицированные и авторизованные пользователи могут получить доступ к URL-адресу
- Убедитесь, что текущий пользователь имеет доступ к bookID.Вы можете сохранить список книг, доступных пользователю, в объекте сеанса.
- Если у пользователя нет доступа, верните страницу с ошибкой 403.
Существует несколько других стратегий.защищать URL-адреса;некоторые используют токены, чтобы гарантировать, что URL не был обработан.Другие не отправляют bookID клиенту, а вместо этого используют номер от {1 до n}, где только сервер знает, что 1 соответствует книге A и так далее.Но идея состоит в том, чтобы гарантировать, что пользователь не получит доступ к книге, к которой у него нет прав доступа.
Если вы используете Spring, я настоятельно рекомендую Spring Security.В противном случае посмотрите в JAAS.