社区
Java EE
帖子详情
请问hibernate防止SQL注入的原理是怎么样的
zengjz88
2012-04-26 10:19:53
用hibernate做数据库操作的底层,一般不建议使用字符串的拼接。都建议使用占位符:name或?来setParamater。这样能防止SQL注入,我看了看源码有没有处理SQL关键词这样的操作,Filet Query对象子类好像没看到有处理这些SQL关键词的地方,我也没看太懂,有点晕。。。。
问下大牛们,谁知道hibernate在那个类的哪个方法有处理些这个的地方还是我压根就理解错了,指点下。。。thx。
...全文
616
5
打赏
收藏
请问hibernate防止SQL注入的原理是怎么样的
用hibernate做数据库操作的底层,一般不建议使用字符串的拼接。都建议使用占位符:name或?来setParamater。这样能防止SQL注入,我看了看源码有没有处理SQL关键词这样的操作,Filet Query对象子类好像没看到有处理这些SQL关键词的地方,我也没看太懂,有点晕。。。。 问下大牛们,谁知道hibernate在那个类的哪个方法有处理些这个的地方还是我压根就理解错了,指点下。。。thx。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
a11336699
2013-05-05
打赏
举报
回复
以前看到老师讲过sql防注入。那时候真感到有点神奇,理解了才知道就是字符串拼接。ej:where id="xxor1==1";这样成了永真,那么任何人都可以登录成功。
zengjz88
2012-04-26
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
使用了预编译占位符就自动防止了SQL注入,不用额外的代码控制
[/Quote]
假如userId用户输入个userId=xxxx' or 'aa'='a
HQL: "FROM FUser WHERE userId ='"+userId+"'";这是拼接的sql
出来的是 FROM FUser WHERE userId ='
xxxx' or 'aa'='aa
'
HQL2:"FROM FUser WHERE userId =:userId"; 占位符的sql
hibernate转换之后出来的是否是:FROM FUser WHERE userId ='
xxxx' or 'aa'='aa
'吗?
能告诉我hibernate的哪个类做了此操作的
15年老程创业中
2012-04-26
打赏
举报
回复
使用了预编译占位符就自动防止了SQL注入,不用额外的代码控制
15年老程创业中
2012-04-26
打赏
举报
回复
防止SQL注入不是防止什么关键字
而是防止拼接SQL的时候执行其它语句或条件不是你想要的
lz搜索下什么是SQL注入就明白了
fwb3950201
2012-04-26
打赏
举报
回复
参考 jdbc中的 PreparedStatement
Java面试题2023最新版大合集(485页)
java面试合集(内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、 Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、 Linux 等技术栈)
实验室设备管理系统Java版
Java版实验室设备管理系统 内含文档、演示文稿、源代码、数据库。开发技术Java、Sql Server。
基于Java的酒店管理系统源码(毕业设计 JAVA J2EE)
基于Java的酒店管理系统源码(毕业设计 JAVA J2EE),酒店后台管理。 可直接运行。做毕业设计、课程设计或者想研究下技术的可以下载学习。需要更多资源的可以关注我。
Mybatis和
Hibernate
:
防止
SQL注入
SQL是如何注入的
SQL注入
是目前黑客最常用的攻击手段,它的
原理
是利用数据库对特殊标识符的解析强行从页面向后台传入。改变SQL语句结构,达到扩展权限、创建高等级用户、强行修改用户资料等等操作。 为什么这么说,下面就以JAVA为例进行说明: 假设数据库中存在这样的表: table user( id varchar(20) PRIMARY KEY , n...
Hibernate
一些
防止
SQL注入
的方式
Hibernate
在操作数据库的时候,有以下几种方法来
防止
SQL注入
,大家可以一起学习一下。 1.对参数名称进行绑定: Query query=session.createQuery(hql); query.setString(“username”,name); 2.对参数位置进行邦定: Query query=sess...
Java EE
67,541
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章