package com.piend.tongzhan.common.util; import java.lang.reflect.Field; import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Date; import java.util.HashMap; import java.util.Map; public class SQLUtils { private PreparedStatement ps; private Map<Integer, String> indexMap = new HashMap<Integer, String>(); public SQLUtils(Connection conn, String orgSql) { int n = 0, lastIndex = 0, index = 0; for (int i = 0; i < orgSql.length(); i++) { if (orgSql.charAt(i) == '#') { n++; } if (n % 2 == 0 && orgSql.charAt(i) == '#') { index++; this.indexMap.put(index, orgSql.substring(lastIndex + 1, i)); } if (orgSql.charAt(i) == '#') { lastIndex = i; } } for (Integer i : this.indexMap.keySet()) { orgSql = orgSql.replace("#" + this.indexMap.get(i) + "#", "?"); } try { System.out.println(orgSql); this.ps = conn.prepareStatement(orgSql); } catch (SQLException e) { e.printStackTrace(); } } public PreparedStatement getPs() { return ps; } public Map<Integer, String> getIndexMap() { return indexMap; } public void setString(String name, String value) throws SQLException { try { for (Integer i : this.indexMap.keySet()) { if (name.equals(indexMap.get(i))) { ps.setString(i, value); } } } catch (SQLException e) { e.printStackTrace(); } } public void setLong(String name, Long value) throws SQLException { try { for (Integer i : this.indexMap.keySet()) { if (name.equals(indexMap.get(i))) { ps.setLong(i, value); } } } catch (SQLException e) { e.printStackTrace(); } } public void setDouble(String name, Double value) throws SQLException { try { for (Integer i : this.indexMap.keySet()) { if (name.equals(indexMap.get(i))) { ps.setDouble(i, value); } } } catch (SQLException e) { e.printStackTrace(); } } public void setInt(String name, Integer value) throws SQLException { try { for (Integer i : this.indexMap.keySet()) { if (name.equals(indexMap.get(i))) { ps.setInt(i, value); } } } catch (SQLException e) { e.printStackTrace(); } } public void setDate(String name, Date value) { try { for (Integer i : this.indexMap.keySet()) { if (name.equals(indexMap.get(i))) { ps.setDate(i, new java.sql.Date(value.getTime())); } } } catch (SQLException e) { e.printStackTrace(); } } public void setBigDecimal(String name, BigDecimal value) { try { for (Integer i : this.indexMap.keySet()) { if (name.equals(indexMap.get(i))) { ps.setBigDecimal(i, value); } } } catch (SQLException e) { e.printStackTrace(); } } public void setObject(String name, Object value) { try { for (Integer i : this.indexMap.keySet()) { if (name.equals(indexMap.get(i))) { ps.setObject(i, value); } } } catch (SQLException e) { e.printStackTrace(); } } // 设置所有Map参数 public void setAllMap(Map<String, Object> paraData) { try { for (Integer i : this.indexMap.keySet()) { for (String para : paraData.keySet()) { if (para.equals(indexMap.get(i))) { ps.setObject(i, paraData.get(para)); break; } } } } catch (SQLException e) { e.printStackTrace(); } } // 设置所有的javaBean public void setAllBean(Object bean) { Field fields[] = bean.getClass().getDeclaredFields(); Field.setAccessible(fields, true); try { for (Integer i : this.indexMap.keySet()) { for (int j = 0; j < fields.length; j++) { if (fields[j].getName().equals(indexMap.get(i))) { ps.setObject(i, fields[j].get(bean)); break; } } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { } }
相关推荐
SQL Injection,即SQL注入。 受影响的系统:对输入的参数不进行检查和过滤的系统 正常来讲,我们通过地址接收一些必要的参数如: PHP100.php?id=2 页面中我们会使用 2 写入到SQL语句中 正常情况:Select * ...
1、PHP注入的基本原理 程序员的水平及经验也参差不齐,相当大一部分程序员...$_POST $_GET $_SESSION 等接受参数,并加以过滤4、提高数据库命名技巧,对于一些重要的字段可根据程序特点命名5、对于常用方法加以封装,
针对MongoClient的PHP应用程序参数注入攻击,返回所有数据库中的记录。Javascript函数变量转移和任意代码注入,返回所有数据库中的记录。类似于盲SQL注入的用于验证无来自应用程序的反馈的Javascript注入漏洞的时序...
安全,使用索引或命名参数,以防止SQL注入。 强大的性能。 可以对任何现有的业务对象和业务层不需要任何FluentData引用。 作为一个组件(DLL),并作为一个单一的源代码文件。 高级功能 Transactions 多个结果集 - ...
在 Java 中,通过适当命名的 Pattern 类可以容易确定 String 是否匹配某种模式。模式可以象匹配某个特定的 String 那样简单,也可以很复杂,需要采用分组和字符类,如空白、数字、字母或控制符。 Pattern 类的方法...
执行效率更高13、优化四大会员中心各项功能14、修复部分页面参数过滤不严...SQL注入漏洞19、修复参数问题导致的重复安装问题20、更新会员审核机制及职位简历审核机制21、全新发布3.2前台模版22、全新发布3.2会员系统...
4.2.3 SQL注入简介 72 4.2.4 自动结果映射 73 4.2.5 联结相关数据 74 4.3 映射参数 75 4.3.1 外部参数映射 75 4.3.2 再论内联参数映射 76 4.3.3 基本类型参数 78 4.3.4 JavaBean参数和Map参数 78 4.4 使用内联结果...
使用命名或位置参数,而不是将用户输入直接插入查询中 如果将用户输入直接插入查询中,请用一对单引号('')对用户输入字符串(')中的单引号进行转义 从查询中删除注释并放入代码中(这是附加的保护层) 使用对号...
嘉缘人才系统php版,全新研发,功能...18、修复企业形象3D图片墙存在的SQL注入漏洞 19、修复参数问题导致的重复安装问题 20、更新会员审核机制及职位简历审核机制 21、全新发布3.2前台模版 22、全新发布3.2会员系统模版
安全设置:SQL注入管理,后台可设置SQL防注入参数等,SQL注入记录,可封锁攻击者IP等。 后台登陆记录:可查看管理员登陆的相关记录、IP、登陆时间等。 页面管理:创建和管理企业资料如:企业简介、企业荣誉、相关...
安全设置:SQL注入管理,后台可设置SQL防注入参数等,SQL注入记录,可封锁攻击者IP等。 后台登陆记录:可查看管理员登陆的相关记录、IP、登陆时间等。 页面管理:创建和管理企业资料如:企业简介、企业荣誉、相关...
第15单元提交文件:Web漏洞和强化 第1部分:问答 URL巡航导弹 URL是Web的网关,为用户提供对所有可用在线资源的不受限制的访问权限。... 答:跨站点脚本代码注入SQL注入EMAIL标头 注射攻击利用了CIA三合会的哪
MyQEE内置XSS过滤机制,并且提供Database QueryBuilder组件可有效防止SQL注入。 4.提供技术人员开发调试工具 借助于多年团队开发经验,我们提供了比较实用的开发工具,包括本地调试环境的开启,远程调试环境,...
最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库。...(1)MySQL有配置参数lower_case_table_names=1,即库表名以小写存储,大小写不敏感。如果是0,则库表名以实际情况
5.3.6 参数化定制类型 5.3.7 映射枚举 5.4 小结 第6章 映射集合和实体关联 6.1 值类型的set、bag、list和map 6.1.1 选择集合接口 6.1.2 映射set 6.1.3 映射标识符bag 6.1.4 映射...
(1)本工具提供了3中连接数据库的方式,分别是:MySql、Oracle、SqlServer,在界面上给出连接示例,方便进行复制和修改(减少因错误配置连接方式而带来了不能链接数据库问题)。配置正确后即可正确读取出数据库中的...
最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的...
(1)本工具提供了3中连接数据库的方式,分别是:MySql、Oracle、SqlServer,在界面上给出连接示例,方便进行复制和修改(减少因错误配置连接方式而带来了不能链接数据库问题)。配置正确后即可正确读取出数据库中的...
13、高安全性,内置filter组件实现过滤机制,防止sql注入及xss跨站脚本攻击。 14、支持orm,真正实现OOP开发的快捷且性能优越。 15、内置document输出模块,为指定项目生成chm或html格式的api开发手册。 EaglePHP...
13、高安全性,内置filter组件实现过滤机制,防止sql注入及xss跨站脚本攻击。 14、支持orm,真正实现OOP开发的快捷且性能优越。 15、内置document输出模块,为指定项目生成chm或html格式的api开发手册。 ...