java过滤器如何操作数据库_jsp – 使用Java中的过滤器验证用户名,密码(与数据库联系)...
String sql=”select * from reg where username='”+user+”‘ and pass='”+pwd+”‘”;
這是一個(gè)非常糟糕的做法.這種方法要求用戶(hù)名和密碼都通過(guò)請(qǐng)求傳遞普通香草.而且,你有一個(gè)SQL注入攻擊漏洞.
利用會(huì)話(huà),在JSP / Servlet中你有HttpSession.實(shí)際上也沒(méi)有必要在使用過(guò)濾器的每個(gè)請(qǐng)求上一次又一次地命中數(shù)據(jù)庫(kù).這是不必要的昂貴.只需使用Servlet將User置于會(huì)話(huà)中,并使用Filter檢查每個(gè)請(qǐng)求的存在.
從/login.jsp開(kāi)始:
${error}
然后,創(chuàng)建一個(gè)LoginServlet,它映射到/ login的url-pattern上,并按如下方式實(shí)現(xiàn)doPost():
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = userDAO.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user); // Put user in session.
response.sendRedirect("/secured/home.jsp"); // Go to some start page.
} else {
request.setAttribute("error", "Unknown login, try again"); // Set error msg for ${error}
request.getRequestDispatcher("/login.jsp").forward(request, response); // Go back to login page.
}
然后,創(chuàng)建一個(gè)映射在/ secured / *的url-pattern上的LoginFilter(你可以選擇你自己的,例如/ protected / *,/ restricted / *,/ users / *等,但這必須至少涵蓋所有安全頁(yè)面,您還需要將JSP放在WebContent中的相應(yīng)文件夾中)并具有如下實(shí)現(xiàn)的doFilter():
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
String loginURI = request.getContextPath() + "/login.jsp";
boolean loggedIn = session != null && session.getAttribute("user") != null;
boolean loginRequest = request.getRequestURI().equals(loginURI);
if (loggedIn || loginRequest) {
chain.doFilter(request, response); // User is logged in, just continue request.
} else {
response.sendRedirect(loginURI); // Not logged in, show login page.
}
那應(yīng)該是它.希望這可以幫助.
要了解UserDAO的外觀,您可能會(huì)發(fā)現(xiàn)this article很有用.它還介紹了如何使用PreparedStatement保存您的Web應(yīng)用程序免受SQL注入攻擊.
也可以看看:
總結(jié)
以上是生活随笔為你收集整理的java过滤器如何操作数据库_jsp – 使用Java中的过滤器验证用户名,密码(与数据库联系)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 英雄联盟登录无限弹出验证码!
- 下一篇: oracle频,Oracle动作频频 J