如何解决带有ID或用户名的JSP中的引用
| 在jsp Login或Session()中,最好在会话中放入用户名或ID? 并在servlet或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”实体的Javabean,这样我就可以立即访问其所有属性,并且通常在servlet中进行操作。
@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注入攻击和准备好的语句的信息。
最后,我错过了“ 6”块,在该块中,您正确地关闭了JDBC资源,以防止它们泄漏,这可能导致您的应用程序在DB耗尽所有资源时长期崩溃。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。