seesion в JSP с идентификатором или именем пользователя - PullRequest
0 голосов
/ 15 июня 2011

В jsp Login или Session () что лучше поставить в сеанс Имя пользователя или Id ??

и я тестирую на сервлете или на другой странице JSP ??

я использую этот код на другой странице JSP, но я думаю, что это не безопасно

 <%if(session.getAttribute("username") == null){%>
<%
String err ; 
Connection cnn;
  Class.forName(System.getProperty("database.driver","com.mysql.jdbc.Driver"));
 cnn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sondage","root", "");
  Statement stat1 = cnn.createStatement();

  String Username,Password;

  Username=request.getParameter("UserName");
  Password=request.getParameter("passWord");

  //Le nomre de produits
ResultSet resultat = stat1.executeQuery("select * from utilisateur where username ='"+ Username +"' and password = '"+Password+"'");
if (resultat.next()) {

session.putValue("username",Username);

    RequestDispatcher rd =request.getRequestDispatcher("vote.jsp");
    rd.forward(request, response);

}
else {
    RequestDispatcher rd =request.getRequestDispatcher("authentification.jsp?err=1");
    rd.forward(request, response);
     }
    %>

1 Ответ

2 голосов
/ 15 июня 2011

Это все зависит от вас.Лично я поместил туда Javabean, представляющий сущность User, чтобы у меня был мгновенный доступ ко всем ее свойствам, и я обычно делаю это в сервлете.

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    User user = userDAO.find(username, password);

    if (user != null) {
        request.getSession().setAttribute("user", user);
        response.sendRedirect("userhome");
    } else {
        request.setAttribute("message", "Unknown login, try again");
        request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
    }
}

Есть только несколько вещей, которыевыглядит странно / небезопасно:

<%if(session.getAttribute("username") == null){%>

Почему эта проверка?Разве пользователь не может повторно войти в систему как другой пользователь?Для этого лучше использовать Filter.

ResultSet resultat = stat1.executeQuery("select * from utilisateur where username ='"+ Username +"' and password = '"+Password+"'");

Это дыра SQL-инъекция .Читайте о атаках с использованием SQL-инъекций и подготовленные операторы .

Наконец, я пропускаю блок finally, в котором вы правильно закрываете ресурсы JDBC, чтобы предотвратить их утечкучто может привести к сбою приложения в долгосрочной перспективе, когда в БД заканчиваются все ресурсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...