Skip to content

Commit d36a7ed

Browse files
committed
add test case
1 parent 99c8b29 commit d36a7ed

File tree

6 files changed

+30
-1
lines changed

6 files changed

+30
-1
lines changed

java/ql/src/experimental/Security/CWE/CWE-089/MyBatisMapperXmlSqlInjection.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,9 @@
6767
-- good
6868
select id,name from test where id = ${id}
6969
</select>
70+
71+
<select id="good2" parameterType="java.lang.String" resultMap="BaseResultMap">
72+
-- good
73+
select id,name from test where name = #{name}
74+
</select>
7075
</mapper>

java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisMapperXmlSqlInjection.expected

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ edges
1515
| MybatisSqlInjection.java:53:35:53:40 | params : List | MybatisSqlInjectionService.java:39:19:39:37 | params : List |
1616
| MybatisSqlInjection.java:57:19:57:46 | params : String[] | MybatisSqlInjection.java:58:35:58:40 | params : String[] |
1717
| MybatisSqlInjection.java:58:35:58:40 | params : String[] | MybatisSqlInjectionService.java:43:19:43:33 | params : String[] |
18+
| MybatisSqlInjection.java:68:26:68:36 | name : String | MybatisSqlInjection.java:69:56:69:59 | name : String |
19+
| MybatisSqlInjection.java:69:56:69:59 | name : String | MybatisSqlInjectionService.java:52:26:52:36 | name : String |
1820
| MybatisSqlInjectionService.java:12:25:12:35 | name : String | MybatisSqlInjectionService.java:13:47:13:50 | name |
1921
| MybatisSqlInjectionService.java:17:25:17:35 | name : String | MybatisSqlInjectionService.java:18:47:18:50 | name |
2022
| MybatisSqlInjectionService.java:22:25:22:33 | test : Test | MybatisSqlInjectionService.java:23:47:23:50 | test |
@@ -23,6 +25,7 @@ edges
2325
| MybatisSqlInjectionService.java:35:19:35:44 | params : Map | MybatisSqlInjectionService.java:36:27:36:32 | params |
2426
| MybatisSqlInjectionService.java:39:19:39:37 | params : List | MybatisSqlInjectionService.java:40:27:40:32 | params |
2527
| MybatisSqlInjectionService.java:43:19:43:33 | params : String[] | MybatisSqlInjectionService.java:44:27:44:32 | params |
28+
| MybatisSqlInjectionService.java:52:26:52:36 | name : String | MybatisSqlInjectionService.java:53:48:53:51 | name |
2629
nodes
2730
| MybatisSqlInjection.java:19:25:19:49 | name : String | semmle.label | name : String |
2831
| MybatisSqlInjection.java:20:55:20:58 | name : String | semmle.label | name : String |
@@ -40,6 +43,8 @@ nodes
4043
| MybatisSqlInjection.java:53:35:53:40 | params : List | semmle.label | params : List |
4144
| MybatisSqlInjection.java:57:19:57:46 | params : String[] | semmle.label | params : String[] |
4245
| MybatisSqlInjection.java:58:35:58:40 | params : String[] | semmle.label | params : String[] |
46+
| MybatisSqlInjection.java:68:26:68:36 | name : String | semmle.label | name : String |
47+
| MybatisSqlInjection.java:69:56:69:59 | name : String | semmle.label | name : String |
4348
| MybatisSqlInjectionService.java:12:25:12:35 | name : String | semmle.label | name : String |
4449
| MybatisSqlInjectionService.java:13:47:13:50 | name | semmle.label | name |
4550
| MybatisSqlInjectionService.java:17:25:17:35 | name : String | semmle.label | name : String |
@@ -56,6 +61,8 @@ nodes
5661
| MybatisSqlInjectionService.java:40:27:40:32 | params | semmle.label | params |
5762
| MybatisSqlInjectionService.java:43:19:43:33 | params : String[] | semmle.label | params : String[] |
5863
| MybatisSqlInjectionService.java:44:27:44:32 | params | semmle.label | params |
64+
| MybatisSqlInjectionService.java:52:26:52:36 | name : String | semmle.label | name : String |
65+
| MybatisSqlInjectionService.java:53:48:53:51 | name | semmle.label | name |
5966
#select
6067
| MybatisSqlInjectionService.java:13:47:13:50 | name | MybatisSqlInjection.java:19:25:19:49 | name : String | MybatisSqlInjectionService.java:13:47:13:50 | name | MyBatis Mapper XML sql injection might include code from $@ to $@. | MybatisSqlInjection.java:19:25:19:49 | name | this user input | SqlInjectionMapper.xml:23:3:25:12 | select | this sql operation |
6168
| MybatisSqlInjectionService.java:18:47:18:50 | name | MybatisSqlInjection.java:25:25:25:49 | name : String | MybatisSqlInjectionService.java:18:47:18:50 | name | MyBatis Mapper XML sql injection might include code from $@ to $@. | MybatisSqlInjection.java:25:25:25:49 | name | this user input | SqlInjectionMapper.xml:27:3:29:12 | select | this sql operation |

java/ql/test/experimental/query-tests/security/CWE-089/src/main/MybatisSqlInjection.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void bad7(@RequestBody List<String> params) {
5454
}
5555

5656
@RequestMapping(value = "msi8", method = RequestMethod.POST, produces = "application/json")
57-
public void bad7(@RequestBody String[] params) {
57+
public void bad8(@RequestBody String[] params) {
5858
mybatisSqlInjectionService.bad8(params);
5959
}
6060

@@ -63,4 +63,10 @@ public List<Test> good1(Integer id) {
6363
List<Test> result = mybatisSqlInjectionService.good1(id);
6464
return result;
6565
}
66+
67+
@GetMapping(value = "good2")
68+
public List<Test> good2(String name) {
69+
List<Test> result = mybatisSqlInjectionService.good2(name);
70+
return result;
71+
}
6672
}

java/ql/test/experimental/query-tests/security/CWE-089/src/main/MybatisSqlInjectionService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,9 @@ public List<Test> good1(Integer id) {
4848
List<Test> result = sqlInjectionMapper.good1(id);
4949
return result;
5050
}
51+
52+
public List<Test> good2(String name) {
53+
List<Test> result = sqlInjectionMapper.good2(name);
54+
return result;
55+
}
5156
}

java/ql/test/experimental/query-tests/security/CWE-089/src/main/SqlInjectionMapper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ public interface SqlInjectionMapper {
2525
void bad8(String[] params);
2626

2727
List<Test> good1(Integer id);
28+
29+
List<Test> good2(String name);
2830
}

java/ql/test/experimental/query-tests/security/CWE-089/src/main/SqlInjectionMapper.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,8 @@
7777
<select id="good1" parameterType="java.lang.Integer" resultMap="BaseResultMap">
7878
select id,name from test where id = ${id}
7979
</select>
80+
81+
<select id="good2" parameterType="java.lang.String" resultMap="BaseResultMap">
82+
select id,name from test where name = #{name}
83+
</select>
8084
</mapper>

0 commit comments

Comments
 (0)