Я начинаю исследовать мир Servlets и JSP и успешно создал систему входа в систему. Но его реализация не такая совершенная, как я ее исключил.Вход в систему пропускает аутентификацию сервлета при изменении URL-адреса
Senario:
1> Пользователь вводит имя пользователя и пароль в index.jsp.
2> Запрос отправляется в сервлет (login.login.java)
3> сервлет подключается к базе данных и проверяет, является ли пользователь действительным или нет. (С использованием LoginBean.java, LoginDB.java и GetConnection.java т.е. класс компонента, базы данных QueryClass и DB соединения класса соотв)
4> Если пользователь подтверждено,
5> Пользователь перенаправляется на главную .jsp
еще
error.jsp (Это просто реплика index.jsp некоторых сообщений, добавленных)
Проблемы:
1> если я просто открываю index.jsp в своем браузере и меняю URL-адрес на home.jsp Я могу обойти сервлет.
2> Если я попытаюсь сохранить пароль в mysql, используя MD5 i.e PASSWORD ('mypass'), я не аутентифицирован.
это мой doPOST Метод
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String user = request.getParameter("user");
String pass = request.getParameter("pass");
LoginBean bean = new LoginBean();
bean.SetUser(user);
bean.SetPass(pass);
bean = LoginDB.check_login(bean);
if (bean.isValid()) {
HttpSession session = request.getSession(true);
session.setAttribute("currentSessionUser", user);
response.sendRedirect("home.jsp");
} else {
response.sendRedirect("Error.jsp");
}
}
I tired to Modify my Home.jsp and check for a valid session before loading the page. Using the Following
<%
if(!session.isNew())
{
response.sendRedirect("index.jsp");
}
%>
Это Фиксирует URL нюхают, но он останавливает действительных пользователей от того, чтобы перенаправлены home.jsp
UPDATE:
As Предлагаемый JB Nizet Я пытаюсь реализовать фильтры по этому вопросу. Но, как я уже сказал, я ученик, поэтому я не совсем уверен, как этого добиться:
Что мне нужно сделать в моем методе doFilter?
я преобразовал ServletRequest Объекта для HttpRequest Объекта
использования
HttpServletRequest REQ = (HttpServletRequest) запроса;
Теперь, используя этот объект req, как я на самом деле нажал кнопку sumbit или был напрямую изменен URL-адрес для обхода сервлета?
Прошу прощения, это должно быть очень элементарно, но я нахожусь в этой голове часами. Пожалуйста, помогите мне
С уважением
Genocide_Hoax
Для первого вопроса, проверьте значение сеанса в JSP, для второго, что происходит? подробнее ... –
Вы имеете в виду, что мне нужно проверить атрибут сеанса, когда мой home.jsp загружает и перенаправляет пользователя в index.jsp, если значение не задано. Я устал его реализовывать, но все напрасно. Можете ли вы помочь мне достичь этого? –
И для второго вопроса. Я сохраняю свое значение в базе данных, используя insert в значение users ('admin', password ('admin'). И я пытаюсь войти в систему с помощью admin, а admin отправляет меня на неверную страницу входа, то есть я не получаю Authenticated. Где, как если бы я вставлял значение, используя вставку в значения пользователей («admin», «admin»), все работает нормально. –