1. 用java编写防止SQL注入!求java高手指点!问题解决后,一定提高悬赏!

SQL注入无非就是把对单引号和双"-"进行转换。

最好不要拼装SQL语句,以使用参数化的sql或者直接使用存储过程进行数据查询存取。

2. java如何防止sql注入

采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:
String
sql=
"select
*
from
users
where
username=?;
PreparedStatement
preState
=
conn.prepareStatement(sql);
preState.setString(1,
userName);
preState.setString(2,
password);
ResultSet
rs
=
preState.executeQuery();

3. java的预编译语句集能防止所有sql注入吗

是的,预编译有个类是PreparedStatement.
这个类的对象是通过参数?来传值的
例:
String sql = "select * from table where id = ?";
Connection con = .....///这里得到是数据库的连接
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1,id);//这里的数据库语句所用到的参数要被设置的,如果你传入了错的值,或不同类型的值,它在插入到数据库语句中会编译不通过,这也就防止了SQL注入。

4. java防止sql注入有哪些方法

前台我们可以通过过滤用户输入,后台可以通过PreparedStatement来代替Statement来执行SQL语句。

5. java防止SQL注入的问题

"select * from where uname=? and upass=?"; select * from 表名,你的表名呢?没表名就直接where?

6. Java中如何解决sql 注入漏洞

1、对传递过来的参数值段做过滤处理 包含sql操作关键字的干掉!当然这个要符合你的业务需求
2、不要对sql语句做拼接处理 可以用类似 jdbc中的preparestatement动态sql技术 生成sql

3、对传递进来的参数值做字符串转义 'sql do some' 让数据库把这段当成一段字符串处理 而不进行操作编译

7. java 多条件查询的sql怎么防止sql注入漏洞

原理,过滤所有请求中含有非法的字符,例如:, & < select delete 等关键字,黑客可以利用这些字符进行注入攻击,原理是后台实现使用拼接字符串!
你的点赞是我前进的动力,
记得好评和点赞,答题不易,互相帮助,
手机提问的朋友在客户端右上角评价点(满意)即可.
如果你认可我的回答,请及时点击(点赞为满意回答)按钮!!

8. java中preparedstatement为什么可以防止sql注入

其实是预编译功能,用preparedstatement就会把sql的结构给数据库预编译。

SQL注入 攻 击 是利用是指利用 设计 上的漏洞,在目 标 服 务 器上运行 Sql语 句以及 进 行其他方式的 攻 击 ,
动态 生成 Sql语 句 时 没有 对 用 户输 入的数据 进 行 验证 是 Sql注入 攻 击 得逞的主要原因。
对 于 JDBC而言, SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的, 这 是因 为 PreparedStatement 不允 许 在不同的插入 时间 改 变查询 的 逻辑结 构。
如 验证 用 户 是否存在的 SQL语 句 为 :
select count(*) from usertable where name='用 户 名 ' and pswd='密 码 '
如果在 用 户 名字段 中 输 入 ' or '1'='1' or '1'='1
或是在 密 码 字段 中 输 入 1' or '1'='1
将 绕过验证 ,但 这种 手段只 对 只 对 Statement有效, 对 PreparedStatement 无效。
PreparedStatement 相 对 Statement有以下 优 点:
1.防注入攻击
2.多次运行速度快
3.防止数据库缓冲区溢出
4.代 码 的可读性可维护性好

加油!

9. java拼接sql怎么防止注入

使用Hibernate框架的SQL注入防范 Hibernate是目前使用最多的ORM框架,在Java Web开发版中,很多时候不直接使权用JDBC,而使用Hibernate来提高开发效率。
在Hibernate中,仍然不应该通过拼接HQL的方式,而应使用参数化的方式来防范SQL注入。有两种方式,一种仍然是使用JDBC一样的占位符“?”,但更好的方式是使用Hibernate的命名参数,例如检测用户名和密码是否正确,使用Hibernate可以写成:
String queryStr = “from user where username=:username ”+”password=:password”;
List result = session.createQuery(queryStr).setString("username", username).setString("password", password).list();

10. java防止SQL注入的几个途径

  • java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用PreparedStatement来代替Statement来执行SQL语句,其后只是输入参数,SQL注入攻击手段将无效,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构,大部分的SQL注入已经挡住了,在WEB层我们可以过滤用户的输入来防止SQL注入比如用Filter来过滤全局的表单参数

  • 01importjava.io.IOException;

  • 02importjava.util.Iterator;

  • 03importjavax.servlet.Filter;

  • 04importjavax.servlet.FilterChain;

  • 05importjavax.servlet.FilterConfig;

  • 06importjavax.servlet.ServletException;

  • 07importjavax.servlet.ServletRequest;

  • 08importjavax.servlet.ServletResponse;

  • 09importjavax.servlet.http.HttpServletRequest;

  • 10importjavax.servlet.http.HttpServletResponse;

  • 11/**

  • 12*通过Filter过滤器来防SQL注入攻击

  • 13*

  • 14*/

  • {

  • 16privateStringinj_str="'|and|exec|insert|select|delete|update|count|*|%

  • |chr|mid|master|truncate|char|declare|;|or|-|+|,";

  • =null;

  • 18/**

  • 19*?

  • 20*/

  • 21protectedbooleanignore=true;

  • 22publicvoidinit(FilterConfigconfig)throwsServletException{

  • 23this.filterConfig=config;

  • 24this.inj_str=filterConfig.getInitParameter("keywords");

  • 25}

  • 26publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,

  • 27FilterChainchain)throwsIOException,ServletException{

  • 28HttpServletRequestreq=(HttpServletRequest)request;

  • 29HttpServletResponseres=(HttpServletResponse)response;

  • 30Iteratorvalues=req.getParameterMap().values().iterator();//获取所有的表单参数

  • 31while(values.hasNext()){

  • 32String[]value=(String[])values.next();

  • 33for(inti=0;i<value.length;i++){

  • 34if(sql_inj(value[i])){

  • 35//TODO这里发现sql注入代码的业务逻辑代码

  • 36return;

  • 37}

  • 38}

  • 39}

  • 40chain.doFilter(request,response);

  • 41}

  • 42publicbooleansql_inj(Stringstr)

  • 43{

  • 44String[]inj_stra=inj_str.split("\|");

  • 45for(inti=0;i<inj_stra.length;i++)

  • 46{

  • 47if(str.indexOf(""+inj_stra[i]+"")>=0)

  • 48{

  • 49returntrue;

  • 50}

  • 51}

  • 52returnfalse;

  • 53}

  • 54}

  • 也可以单独在需要防范SQL注入的JavaBean的字段上过滤:

  • 1/**

  • 2*防止sql注入

  • 3*

  • 4*@paramsql

  • 5*@return

  • 6*/

  • (Stringsql){

  • 8returnsql.replaceAll(".*([';]+|(--)+).*","");

  • 9}