Пользователь использовал адресную строку? - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно знать, переходил ли кто-либо на определенную страницу моего приложения с помощью панели URL или щелкнул по ссылке, чтобы попасть туда.

Я хочу запретить пользователям использовать панель URL.для перехода на некоторые страницы.

Проблема в Я не могу использовать реферер HTTP , потому что мое приложение не загружает новую страницу при изменении URL.Он просто загружает новые данные на страницу, поэтому мой реферер всегда является экраном входа в систему.Также существуют различные триггеры, которые изменяют URL для автоматической загрузки этих данных, поэтому мне нужно знать наверняка, что пользователь специально набрал в строке URL-адреса и нажал клавишу ввода.

Есть ли другой способзная, что пользователь ввел что-то из строки URL, чтобы я мог заблокировать запрос?

1 Ответ

0 голосов
/ 21 февраля 2019

Таким образом, вы говорите, что ваша страница загружает HTML-файлы динамически с сервера, используя JavaScript API, такой как fetch, а затем использует JavaScript History API , чтобы обновить URL с помощьюимя файла HTML, который был загружен?Таким образом, первый URL-адрес - /page?name=logincheck.html, а затем он изменяет URL-адрес на /page?name=thetool.html после выполнения проверки входа в систему без перезагрузки страницы?

Если так работает ваше приложение, теоретически вы можете отключить перезапись URL-адреса.- приложение все еще может знать, на какой странице оно находится, потому что JavaScript может сохранить текущую страницу в переменную.Тогда пользователи никогда не увидят URL с thetool.html, который обходит проверку входа в систему.Но эта настройка не защитит вас от злонамеренного хакера, который может угадать, что thetool.html - это существующая страница.

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

Как проверить на стороне сервера, является ли кто-либовход в систему зависит от того, какое серверное программное обеспечение вы используете (Apache Server, приложение Java Spring MVC, приложение Ruby on Rails) и как ваша текущая страница входа в систему в настоящее время сообщает остальной части вашего программного обеспечения, что пользователь вошел в систему (файл cookie,строка в таблице sessions в базе данных, веб-токен JSON , сохраненный в локальном хранилище).Я не могу давать инструкции, не зная программного обеспечения и метода аутентификации, который вы используете, но я могу вам сказать, что это возможно.

В общем, вход в систему должен сообщать серверу о создании нового пользовательского сеанса, исохраните куки в браузере, ссылающемся на этот сеанс.Всякий раз, когда браузер запрашивает защищенную страницу, серверное программное обеспечение должно сначала проверить, был ли отправлен файл cookie сеанса и соответствует ли файл cookie сеанса действующему в настоящее время сеансу.Если это не так, серверное программное обеспечение должно отправить пустую страницу с кодом состояния 403 Forbidden вместо реальной страницы.

...