Skip to content

Commit 92fed32

Browse files
committed
Changes to query security and validate inputs
1 parent 6489b51 commit 92fed32

25 files changed

+375
-275
lines changed

src/main/java/be/cytomine/domain/image/AbstractImage.java

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
import javax.persistence.*;
2828
import javax.validation.constraints.Min;
29+
import javax.validation.constraints.Pattern;
30+
2931
import java.util.ArrayList;
3032
import java.util.List;
3133
import java.util.Optional;
@@ -38,6 +40,7 @@ public class AbstractImage extends CytomineDomain {
3840
@ManyToOne(fetch = FetchType.EAGER)
3941
private UploadedFile uploadedFile;
4042

43+
@Pattern(regexp = "^[^\\/:*?'<>|\r\n]+$")
4144
private String originalFilename;
4245

4346
@Min(1)

src/main/java/be/cytomine/domain/image/ImageInstance.java

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
package be.cytomine.domain.image;
22

3+
import java.util.Date;
4+
import java.util.Optional;
5+
6+
import javax.persistence.Column;
7+
import javax.persistence.DiscriminatorColumn;
8+
import javax.persistence.DiscriminatorValue;
9+
import javax.persistence.Entity;
10+
import javax.persistence.EntityManager;
11+
import javax.persistence.FetchType;
12+
import javax.persistence.ManyToOne;
13+
import javax.persistence.Table;
14+
import javax.persistence.UniqueConstraint;
15+
import javax.validation.constraints.Pattern;
16+
317
/*
418
* Copyright (c) 2009-2022. Authors: see NOTICE file.
519
*
@@ -25,10 +39,6 @@
2539
import lombok.Getter;
2640
import lombok.Setter;
2741

28-
import javax.persistence.*;
29-
import java.util.Date;
30-
import java.util.Optional;
31-
3242
@Entity
3343
@Getter
3444
@Setter
@@ -46,6 +56,7 @@ public class ImageInstance extends CytomineDomain {
4656
@ManyToOne(fetch = FetchType.LAZY)
4757
private SecUser user; //owner
4858

59+
@Pattern(regexp = "^[^\\/:*?'<>|\r\n]+$")
4960
private String instanceFilename;
5061

5162
private Long countImageAnnotations = 0L;

src/main/java/be/cytomine/domain/meta/Tag.java

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import javax.persistence.*;
2828
import javax.validation.constraints.NotBlank;
2929
import javax.validation.constraints.NotNull;
30+
import javax.validation.constraints.Pattern;
3031

3132
@Entity
3233
@Getter
@@ -35,6 +36,7 @@ public class Tag extends CytomineDomain {
3536

3637
@NotNull
3738
@NotBlank
39+
@Pattern(regexp = "^[\\p{L}0-9]+([\\s-][\\p{L}0-9]+)*$")
3840
private String name;
3941

4042
@ManyToOne(fetch = FetchType.LAZY)

src/main/java/be/cytomine/domain/ontology/Ontology.java

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import javax.persistence.*;
2727
import javax.validation.constraints.NotBlank;
2828
import javax.validation.constraints.NotNull;
29+
import javax.validation.constraints.Pattern;
30+
2931
import java.util.*;
3032
import java.util.stream.Collectors;
3133

@@ -36,6 +38,7 @@ public class Ontology extends CytomineDomain {
3638

3739
@NotNull
3840
@NotBlank
41+
@Pattern(regexp = "^[\\p{L}0-9]+([\\s-][\\p{L}0-9]+)*$")
3942
@Column(nullable = false, unique = true)
4043
protected String name;
4144

src/main/java/be/cytomine/domain/ontology/Term.java

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import javax.persistence.*;
2525
import javax.validation.constraints.NotBlank;
2626
import javax.validation.constraints.NotNull;
27+
import javax.validation.constraints.Pattern;
28+
2729
import java.util.HashSet;
2830
import java.util.Map;
2931
import java.util.Optional;
@@ -39,6 +41,7 @@ public class Term extends CytomineDomain {
3941

4042
@NotNull
4143
@NotBlank
44+
@Pattern(regexp = "^[\\p{L}0-9]+([\\s-][\\p{L}0-9]+)*$")
4245
@Column(nullable = false)
4346
private String name;
4447

src/main/java/be/cytomine/domain/project/Project.java

+3
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,16 @@
2727
import org.hibernate.annotations.LazyCollectionOption;
2828

2929
import javax.persistence.*;
30+
import javax.validation.constraints.Pattern;
31+
3032
import java.util.Set;
3133

3234
@Entity
3335
@Getter
3436
@Setter
3537
public class Project extends CytomineDomain {
3638

39+
@Pattern(regexp = "^[\\p{L}0-9]+([\\s-][\\p{L}0-9]+)*$")
3740
private String name;
3841

3942
@ManyToOne(fetch = FetchType.EAGER)

src/main/java/be/cytomine/domain/security/SecRole.java

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import javax.persistence.Entity;
2626
import javax.validation.constraints.NotBlank;
2727
import javax.validation.constraints.NotNull;
28+
import javax.validation.constraints.Pattern;
29+
2830
import java.io.Serializable;
2931

3032
@Entity
@@ -35,6 +37,7 @@ public class SecRole extends CytomineDomain implements Serializable {
3537
@NotNull
3638
@NotBlank
3739
@Column(unique = true)
40+
@Pattern(regexp = "^[a-zA-Z0-9\\s]+$")
3841
private String authority;
3942

4043
public static JsonObject getDataFromDomain(CytomineDomain domain) {

src/main/java/be/cytomine/domain/security/SecUser.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import javax.persistence.*;
2929
import javax.validation.constraints.NotBlank;
3030
import javax.validation.constraints.NotNull;
31+
import javax.validation.constraints.Pattern;
32+
3133
import java.util.*;
3234

3335
@Entity
@@ -48,7 +50,7 @@ public class SecUser extends CytomineDomain {
4850
@NotNull
4951
@NotBlank
5052
@Column(nullable = false)
51-
// @Pattern(regexp = "^[^\\ ].*[^\\ ]\\$") TODO
53+
@Pattern(regexp = "^[a-zA-Z0-9\\s]+$")
5254
protected String username;
5355

5456
@NotNull

src/main/java/be/cytomine/domain/security/User.java

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import javax.validation.constraints.Email;
2828
import javax.validation.constraints.NotBlank;
2929
import javax.validation.constraints.NotNull;
30+
import javax.validation.constraints.Pattern;
3031
import javax.validation.constraints.Size;
3132

3233
@Entity
@@ -43,11 +44,13 @@ public class User extends SecUser {
4344
@NotNull
4445
@NotBlank
4546
@Column(nullable = false)
47+
@Pattern(regexp = "^[\\p{L}0-9]+([\\s-][\\p{L}0-9]+)*$")
4648
protected String firstname;
4749

4850
@NotNull
4951
@NotBlank
5052
@Column(nullable = false)
53+
@Pattern(regexp = "^[\\p{L}0-9]+([\\s-][\\p{L}0-9]+)*$")
5154
protected String lastname;
5255

5356
@NotNull

src/main/java/be/cytomine/repository/AlgoAnnotationListing.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import javax.persistence.EntityManager;
2020
import java.util.LinkedHashMap;
21+
import java.util.Map;
2122
import java.util.stream.Collectors;
2223

2324
public class AlgoAnnotationListing extends AnnotationListing {
@@ -111,7 +112,7 @@ LinkedHashMap<String, AvailableColumns> getAvailableColumn() {
111112
* Generate SQL string for FROM
112113
* FROM depends on data to print (if image name is aksed, need to join with imageinstance+abstractimage,...)
113114
*/
114-
String getFrom() {
115+
String getFrom(Map<String, Object> parameters) {
115116
String from = "FROM algo_annotation a ";
116117
String where = "WHERE true\n";
117118

@@ -163,7 +164,7 @@ String getFrom() {
163164
return from + "\n" + where;
164165
}
165166

166-
String buildExtraRequest() {
167+
String buildExtraRequest(Map<String, Object> parameters) {
167168
return "";
168169
}
169170

0 commit comments

Comments
 (0)