作者popcorny (毕业了..@@")
看板java
标题Re: [问题] Hibernate 设定动态 SQL 语法
时间Sun Dec 30 16:22:32 2012
※ 引述《cyclone350 (老子我最神)》之铭言:
: 不过刚刚看到 LaPass 在 webdesign 版上看到他说有人 sql 语句用 + 号凑成
: 不管是用什麽 framework都不安全...
: 不过就我目前的想法,动态形成HQL或是SQL语句时除了这方法,想不太到别的。
: 另外不安全的意思是?? Hacker 会骇到我的 JVM 里面,改我的 String pool 吗?
刚好天气冷所以宅在家
那就单就这段来回答
全部用+来凑sql容易产生sql injection的问题
因为db通常都透过web来操作
而要查询的资料常常是透过web的form或是querystring带过来的
如果直接把这个字串丢到sql
那可能会被hacker拿去组你原本没想到的sql
假设你原本写的sql是
"select * from Order where uid=" + uid
这时使用者写了一个uid是[0 or 1 = 1]
这时组出来的sql就是
select * from Order where uid = 0 or 1 = 1
这时就会把所有的Order都扔出来了
解决方法是你最好用jdbc的prepared statement..
或是你用hibernate/jpa,那就用jpql parameter来避免sql injection..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.137.78.102
1F:推 cyclone350:了解,谢谢 12/30 17:05
2F:推 cyclone350:在spring上面的hibernateTemplate有许多要设定param 01/01 01:40
3F:→ cyclone350:google一下用那个应该就可以了,另外想问J2EE基础的书 01/01 01:42
4F:推 cyclone350:除了王者归来还有其他推荐的吗?简体也可,2008後 01/01 01:45
5F:→ cyclone350:因为我繁体书根本找不到书...只有王者归来那本 01/01 01:47
6F:推 song760211:上网查讨厌鬼 ssh教学 01/01 08:43
7F:→ popcorny:建议看官方文件 这领域要看中文的真的是慢又少 01/01 15:02