当前位置:首页 » 编程语言 » sql防止注入java

sql防止注入java

发布时间: 2022-02-15 23:41:47

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

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

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

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

3. 如何防止SQL注入攻击之java网站安全部署

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

  • 第一种:

    采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可,如下所示:

    String sql= "select * from users where username=? and password=?;PreparedStatement preState = conn.prepareStatement(sql);preState.setString(1, userName);preState.setString(2, password);ResultSet rs = preState.executeQuery();...

  • 第二种:

    采用正则表达式将包含有 单引号('),分号(;) 和 注释符号(--)的语句给替换掉来防止SQL注入,如下所示:

    public static String TransactSQLInjection(String str)

    {

    return str.replaceAll(".*([';]+|(--)+).*", " ");

    }

    userName=TransactSQLInjection(userName);

    password=TransactSQLInjection(password);

    String sql="select * from users where username='"+userName+"' and password='"+password+"' "

    Statement sta = conn.createStatement();

    ResultSet rs = sta.executeQuery(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();

4. java防止SQL注入的问题

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

5. 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();

6. 防止sql注入,求大神指点,因为我是刚学java,有些还需要注释,下面是摘抄的,但是我不懂

刚学 就先不要 考虑SQL注入的情况 ,
等 你学到一定时候 ,自然 就明白 了。

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

不知道楼主用没有用过
select * from tab_name where name= '"+name+"' and passwd='"+passwd+"';
把其中passwd换成 [' or '1' = '1] 这样就可以完成sql注入
更有可能对你的数据库表drop操作

如果使用preparedstatement的话就可以直接使用预编译,PreparedStatement不允许在插入时改变查询的逻辑结构.
举例
statement
select * from tab_name where name= '"+name+"' and passwd='"+passwd+"';
passwd就可以换成 ‘ or '1'='1
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);

preparedstatement
select * from tab_name where name=? and passwd=? ;
PreparedStatement pst = con.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, passwd);
ResultSet rs = pstmt.executeQuery();

8. 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();

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

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

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

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

使用prepareStatement,在用户名那里填?,用set方法往里赋值 追问: 我用statement可以返回结果集,用resultsetmetadata也可以查出返回的列数。用preparedstatement也是一样的。我现在的问题是在那个if语句了对传入的password和结果集中的password比较时出了问题。那不怎样防止注入漏洞呀 回答: 我不是说了吗,用preparestatement可以防止sql注入漏洞,你要在好好想下,你是不是晕为什么么不用比较,因为有查到记录了,返回true,查不到就返回falsh了 追问: 用户名是查到了 如果我数据库有个用户名是admin 密码是123 我用户名admin正确了 但是我还是要比较密码是否是一样的呀 回答: 那你组织sql语句的时候对密码也查询,如果没查到,它连if循环都进不去,给你sql语句select top 1 *from 表名where 用户=?

热点内容
电脑怎么看网络密码 发布:2025-01-10 14:56:40 浏览:108
java调用shell脚本参数 发布:2025-01-10 14:43:51 浏览:52
php数组计数 发布:2025-01-10 14:23:03 浏览:474
s盒算法 发布:2025-01-10 14:16:42 浏览:643
c语言用二分法求方程 发布:2025-01-10 14:15:45 浏览:220
广场舞加密 发布:2025-01-10 14:13:21 浏览:521
网络密码显示低安全性是什么意思 发布:2025-01-10 14:11:49 浏览:782
耻辱2博士保险箱密码是多少 发布:2025-01-10 14:11:41 浏览:101
如何把服务器搭在自己电脑 发布:2025-01-10 14:10:57 浏览:585
水晶可以存储 发布:2025-01-10 14:09:35 浏览:391