借助预编译防止sql注入攻击
可重用的sql操作类
public ResultSet doQuery(String sql,Object[] params){
ResultSet rs = null;
conn = this.getConnection();
try{
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i =0;i<params.length;i++){
pstmt.setObject(i+1, params[i]);
}
rs = pstmt.executeQuery();
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
public int doUpdate(String sql,Object[] params){
int res = 0;
conn = this.getConnection();
try{
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1, params[i]);
}
res = pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
return res;
}
public List<Object> doQueryList(String sql,Object []params){
List<Object> list = new ArrayList<Object>();
ResultSet rs = this.doQuery(sql, params);
try{
ResultSetMetaData rsmd = rs.getMetaData();
int columnLength = rsmd.getColumnCount();
while(rs.next()){
Map<String,Object> map = new HashMap<String,Object>();
for(int i = 1;i<=columnLength;i++){
map.put(rsmd.getColumnLabel(i), rs.getObject(i));
}
list.add(map);
}
}catch(Exception e){
e.printStackTrace();
}
return list;
}
查询所有信息的jsp关键代码如下
<%
DBCon dbc = new DBCon();
String sql = "select * from schema.admin";
List list = dbc.doQueryList(sql, new Object[]{}); %>
<table border="1">
<%for(int i =0;i<list.size();i++){
Map<String,Object> map = (Map<String,Object>)list.get(i);
%>
<tr>
<td><%=map.get("id") %></td>
<td><%=map.get("username") %></td>
<td><%=map.get("password") %></td>
<td><a href="do_delete.jsp?id=<%=map.get("id")%>">删除</a></td>
<td><a href="do_edit.jsp?id=<%=map.get("id")%>">编辑</a></td>
</tr>
<%}
dbc.close();
%>
</table>
<a href="addAdmin.jsp">添加用户</a>
更新、删除登操作同理,不再列出。
借助预编译防止sql注入攻击的更多相关文章
- SQL注入和Mybatis预编译防止SQL注入
什么是SQL注入?? 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或页面请求url的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命 ...
- 实例讲解 SQL 注入攻击
这是一篇讲解SQL注入的实例文章,一步一步跟着作者脚步探索如何注入成功,展现了一次完整的渗透流程,值得一读.翻译水平有限,见谅! 一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试. ...
- Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法
sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...
- JSP网页防止sql注入攻击
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使 ...
- SQL注入攻击的常见方式及测试方法
本文主要针对SQL注入的含义.以及如何进行SQL注入和如何预防SQL注入让小伙伴有个了解.适用的人群主要是测试人员,了解如何进行SQL注入,可以帮助我们测试登录.发布等模块的SQL攻击漏洞,至于如何预 ...
- java学习笔记38(sql注入攻击及解决方法)
上一篇我们写了jdbc工具类:JDBCUtils ,在这里我们使用该工具类来连接数据库, 在之前我们使用 Statement接口下的executeQuery(sql)方法来执行搜索语句,但是这个接口并 ...
- Java学习笔记47(JDBC、SQL注入攻击原理以及解决)
JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...
- 2017-2018-2 20179205《网络攻防技术与实践》第十一周作业 SQL注入攻击与实践
<网络攻防技术与实践>第十一周作业 SQL注入攻击与实践 1.研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 缓冲区溢出原理 在计算机内部,输入数据通常被存放在一个临时空间内, ...
- web服务端安全之SQL注入攻击
一.SQL注入攻击的原理攻击者在HTTP请求中,注入恶意的SQL代码,并在服务端执行.比如用户登录,输入用户名camille,密码 ' or '1'='1 ,如果此时使用参数构造的方式,就会出现 ' ...
随机推荐
- 腾讯开源极限渲染js模板链接
https://aui.github.io/art-template/zh-cn/index.html
- Python 百度ai身份证接口案例
调用百度Ai 完成一个学生信息录入的网页小案例 添加图片,身份证信息对号入座 官方文档中心:https://ai.baidu.com/docs#/OCR-API/7e4792c7 utils.py # ...
- TortoiseSVN切换更改登录账号密码
TortoiseSVN切换更改登录账号密码 方法: 在TortoiseSVN的设置对话框中,选择“已保存数据”,在“认证数据”那一行点击“清除”按钮,清楚保存的认证数据,再检出的时候就会重新跳出用户名 ...
- oracle 异常关闭操作 导致数据库无法正常关闭 也无法启动
场景描述: 在关闭数据库的时候,命令没有打全,导致数据库没有正常关闭 解决办法: 重新建立个连接,然后切换到oracle用户 执行强制关闭数据库: OK 问题解决,不过生产环境 还是不推荐 shutd ...
- mysql基础知识(2)
十 一.计算字段 计算字段通常需要使用 AS 来取别名,否则输出的时候字段名为计算表达式 select col1*col2 as col12 from mytable concat() 用于连接两个字 ...
- node.js的
node.js入门 http://www.cnblogs.com/rubylouvre/archive/2010/07/15/1778403.html 专题:Node.js专区http://devel ...
- centos7.0安装docker-18.06.1-ce不能启动问题
最近用centos7.0 yum安装了一个docker-ce18.06.1 但是发现安装好不能启动,于是上官网看了一下,说是docker-ce18.06.1是从centos7.2开始支持的,但是7. ...
- PHP 使用 GeoIP 进行不同国家 ip 测试
$ip = "67.220.91.30";// USA switch (mt_rand(0, 15)) { case 0:// India $ip = "210.212. ...
- elasticSearch6源码分析(6)http和transport模块
1.http模块概述 The http module allows to expose Elasticsearch APIs over HTTP. The http mechanism is comp ...
- Docker基础教程(命令详解)
# docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h ...