![]() |
1
zuoakang 2019-06-17 19:52:52 +08:00 via Android ![]() 肯定的咯,一般都是把 keyword 再加一层双引号
|
![]() |
2
blless 2019-06-17 19:55:53 +08:00 via Android ![]() 参数化查询了解一下
|
![]() |
3
liprais 2019-06-17 19:58:14 +08:00 via iPhone ![]() 不用 preparedstatement 避免不了
|
![]() |
4
raptium 2019-06-17 20:06:28 +08:00 ![]() 楼主的例子应该就已经是参数化的了吧,我看着好像没问题啊
|
![]() |
5
Takamine 2019-06-17 23:40:20 +08:00 via Android ![]() 一般都是走预编译吧。
不放心就加一层参数检验正则就行。 |
![]() |
6
raptium 2019-06-18 06:48:14 +08:00 via iPhone ![]() 又想了一下,如果 keyword 里本来就有 % 似乎查到的就不是想要的了。
|
![]() |
7
loading OP @raptium keyword 这个起码可以在前端搞定,差不到只是涉及到对不对而已,这个后端关注的应该是安全性多一些。
|
8
wenzhoou 2019-06-18 08:03:46 +08:00 via Android ![]() 应该是没有问题,但是实际上还是应该做,去除控制字符,并且分词然后查询
|
9
ebingtel 2019-06-18 08:40:26 +08:00 ![]() 没问题 你的 sql 里面已经有"?"占位符了……客户端会做预编译的
|
![]() |
10
razertory 2019-06-18 10:11:54 +08:00 ![]() 注入不会。不过要考虑索引问题,
|
![]() |
11
msg7086 2019-06-18 11:55:02 +08:00 ![]() keyword 本身还要做%和_的转义吧。
|
![]() |
12
loading OP 感谢楼上所有老铁。
|
![]() |
13
spacewander 2019-06-20 19:18:56 +08:00
如果只是想查询是否包含给定的 keyword,可以试下用 DB 提供的字符串查找 SQL 函数,比如 strpos。性能会好些,另外不用担心转义的问题。
|