【发布时间】:2016-06-08 10:23:07
【问题描述】:
我已将用户名和密码作为用户名,并将其与我的数据库进行比较,如果它们匹配状态为真,如果不是假的话。还有一个额外的角色列,输入的名称可以是用户或管理员,如果它的管理员我想要一些如果是用户要打开其他页面,我想要其他页面。我应该怎么做。 以下代码检查 admin 因为我在插入查询中输入了 admin 我应该写什么更改或附加代码? 我的数据库中有 3 列(用户、密码、角色)。如果输入的用户名与管理员在同一行(应该打开一些不同的 page1.jsp)并且如果它与用户在同一行(一些不同的 page2.jsp 应该打开)。
String name=request.getParameter("name");
String password=request.getParameter("password");
boolean status=false;
try{
Connection con=ConnectionProvider.getCon();
String sql="select * from roles where name='" + name + "' and pass='" + password + "' and role='admin'";
Statement stmt =con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
if(rs.next())
{
status=true;
}
}catch(Exception e){}
if(status){
out.print("Welcome, "+name);
HttpSession session=request.getSession();
session.setAttribute("name",name);
request.getRequestDispatcher("create.html").forward(request, response);
//request.getRequestDispatcher("department.html").forward(request, response);
}
else{
out.print("Sorry, username or password error!");
request.getRequestDispatcher("login.html").include(request, response);
}
【问题讨论】:
-
请使用
PreparedStatement.. 见bobby-tables.com -
请在数据库中散列密码。
-
您可以通过
rs.getString("role")检索存储的角色。 -
little_bobby_tables.jsp?password='||pass -- -
阅读 SQL 注入 nl.wikipedia.org/wiki/SQL-injectie