本帖最后由 nextdoor 于 2014-7-18 13:50 编辑
一个简单的jsp的BBS论坛网站
现在jsp的网站操作数据库为了安全起见都是用户的是预编译指令,把sql注入拒之门外。
虽然sql注入不太好找,但是只要有拼接语句的地方,就存在有sql注入。
下面看一段搜索帖子的代码SearchAction.java[HTML] 纯文本查看 复制代码 public ActionForward execute(ActionMapping mapping, ActionForm form, httpervletRequest
request, httpervletResponse response) throws Exception {
super.setParams(request);
httpession session=request.getSession();
session.setAttribute("mainPage","/pages/show/bbs/searchListShow.jsp");
SearchForm searchform=(SearchForm)form;
String subsql=searchform.getSubsql();
String sqlvalue=searchform.getSqlvalue();
String searchType=searchform.getSearchType();
String validate=request.getParameter("validate");
if(validate==null||validate.equals("")||!validate.equals("yes")){
//通过“返回”超链接触发的搜索操作
subsql=(String)session.getAttribute("subsql");
sqlvalue=(String)session.getAttribute("sqlvalue");
sqlvalue=(String)session.getAttribute("sqlvalue");
searchform.setSubsql(subsql);
searchform.setSqlvalue(sqlvalue);
searchform.setSearchType(searchType);
}
else{
//通过提交表单触发的“搜索操作”
session.setAttribute("subsql",subsql);
sqlvalue=Change.HTMLChange(searchform.getSqlvalue());
session.setAttribute("sqlvalue",sqlvalue);
session.setAttribute("searchType",searchType);
}
String opname="";
String param="";
if(searchType.equals("all")){
opname=" = ";
param=sqlvalue;
}
else{
opname=" like ";
param="%"+sqlvalue+"%";
}
int perR=5;
String currentP=request.getParameter("showpage");
if(currentP==null||currentP.equals(""))
currentP=(String)session.getAttribute("currentPsh");
else
session.setAttribute("currentPsh",currentP);
String gowhich="user/search.do";
OpDB myOp=new OpDB();
myOp.setMark(true);
//进行分页显示
myOp.setPageInfo(perR, currentP, gowhich);
//设置进行分页显示需要的信息
String sql="select * from tb_bbs where "+subsql+opname+"?"; //这句sql代码是拼接的,存在sql注入
Object[] params={param};
List searchlist=myOp.OpBbsListShow(sql,params);
CreatePage page=myOp.getPage();
session.setAttribute("searchlist",searchlist);
session.setAttribute("page",page);
return mapping.findForward("success");
}
下面是分析过程
下面利用union联合查询
|