Skip to content

Commit 9e11d9f

Browse files
committed
Removed untrusted data from exception messages in case they end up on the webpage
1 parent f20a048 commit 9e11d9f

File tree

19 files changed

+37
-145
lines changed

19 files changed

+37
-145
lines changed

Plan/common/src/main/java/com/djrapitops/plan/delivery/export/NetworkPageExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.djrapitops.plan.delivery.web.resolver.request.Request;
2525
import com.djrapitops.plan.delivery.web.resource.WebResource;
2626
import com.djrapitops.plan.delivery.webserver.resolver.json.RootJSONResolver;
27-
import com.djrapitops.plan.exceptions.connection.WebException;
27+
import com.djrapitops.plan.exceptions.WebUserAuthException;
2828
import com.djrapitops.plan.identification.Server;
2929
import com.djrapitops.plan.settings.config.PlanConfig;
3030
import com.djrapitops.plan.settings.config.paths.PluginSettings;
@@ -200,7 +200,7 @@ private String toJSONResourceName(String resource) {
200200
private Optional<Response> getJSONResponse(String resource) {
201201
try {
202202
return jsonHandler.getResolver().resolve(new Request("GET", "/v1/" + resource, null, Collections.emptyMap()));
203-
} catch (WebException e) {
203+
} catch (WebUserAuthException e) {
204204
// The rest of the exceptions should not be thrown
205205
throw new IllegalStateException("Unexpected exception thrown: " + e, e);
206206
}

Plan/common/src/main/java/com/djrapitops/plan/delivery/export/PlayerPageExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.djrapitops.plan.delivery.web.resolver.request.Request;
2525
import com.djrapitops.plan.delivery.web.resource.WebResource;
2626
import com.djrapitops.plan.delivery.webserver.resolver.json.RootJSONResolver;
27-
import com.djrapitops.plan.exceptions.connection.WebException;
27+
import com.djrapitops.plan.exceptions.WebUserAuthException;
2828
import com.djrapitops.plan.settings.config.PlanConfig;
2929
import com.djrapitops.plan.settings.config.paths.PluginSettings;
3030
import com.djrapitops.plan.settings.theme.Theme;
@@ -153,7 +153,7 @@ private String toJSONResourceName(String resource) {
153153
private Optional<Response> getJSONResponse(String resource) {
154154
try {
155155
return jsonHandler.getResolver().resolve(new Request("GET", "/v1/" + resource, null, Collections.emptyMap()));
156-
} catch (WebException e) {
156+
} catch (WebUserAuthException e) {
157157
// The rest of the exceptions should not be thrown
158158
throw new IllegalStateException("Unexpected exception thrown: " + e, e);
159159
}

Plan/common/src/main/java/com/djrapitops/plan/delivery/export/PlayersPageExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.djrapitops.plan.delivery.web.resolver.request.Request;
2525
import com.djrapitops.plan.delivery.web.resource.WebResource;
2626
import com.djrapitops.plan.delivery.webserver.resolver.json.RootJSONResolver;
27-
import com.djrapitops.plan.exceptions.connection.WebException;
27+
import com.djrapitops.plan.exceptions.WebUserAuthException;
2828
import com.djrapitops.plan.identification.ServerInfo;
2929
import com.djrapitops.plan.settings.config.PlanConfig;
3030
import com.djrapitops.plan.settings.config.paths.PluginSettings;
@@ -142,7 +142,7 @@ private String toJSONResourceName(String resource) {
142142
private Optional<Response> getJSONResponse(String resource) {
143143
try {
144144
return jsonHandler.getResolver().resolve(new Request("GET", "/v1/" + resource, null, Collections.emptyMap()));
145-
} catch (WebException e) {
145+
} catch (WebUserAuthException e) {
146146
// The rest of the exceptions should not be thrown
147147
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
148148
}

Plan/common/src/main/java/com/djrapitops/plan/delivery/export/ReactExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import com.djrapitops.plan.delivery.web.resolver.Response;
2121
import com.djrapitops.plan.delivery.web.resolver.request.Request;
2222
import com.djrapitops.plan.delivery.webserver.resolver.json.RootJSONResolver;
23-
import com.djrapitops.plan.exceptions.connection.WebException;
23+
import com.djrapitops.plan.exceptions.WebUserAuthException;
2424
import com.djrapitops.plan.settings.config.PlanConfig;
2525
import com.djrapitops.plan.settings.config.paths.WebserverSettings;
2626
import com.djrapitops.plan.settings.locale.LangCode;
@@ -179,7 +179,7 @@ private String toJsonResourceName(String resource) {
179179
private Optional<Response> getJsonResponse(String resource) {
180180
try {
181181
return jsonHandler.getResolver().resolve(new Request("GET", "/v1/" + resource, null, Collections.emptyMap()));
182-
} catch (WebException e) {
182+
} catch (WebUserAuthException e) {
183183
// The rest of the exceptions should not be thrown
184184
throw new IllegalStateException("Unexpected exception thrown: " + e, e);
185185
}

Plan/common/src/main/java/com/djrapitops/plan/delivery/export/ServerPageExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.djrapitops.plan.delivery.web.resolver.request.Request;
2525
import com.djrapitops.plan.delivery.web.resource.WebResource;
2626
import com.djrapitops.plan.delivery.webserver.resolver.json.RootJSONResolver;
27-
import com.djrapitops.plan.exceptions.connection.WebException;
27+
import com.djrapitops.plan.exceptions.WebUserAuthException;
2828
import com.djrapitops.plan.identification.Server;
2929
import com.djrapitops.plan.identification.ServerInfo;
3030
import com.djrapitops.plan.identification.ServerUUID;
@@ -224,7 +224,7 @@ private String toJSONResourceName(String resource) {
224224
private Optional<Response> getJSONResponse(String resource) {
225225
try {
226226
return jsonHandler.getResolver().resolve(new Request("GET", "/v1/" + resource, null, Collections.emptyMap()));
227-
} catch (WebException e) {
227+
} catch (WebUserAuthException e) {
228228
// The rest of the exceptions should not be thrown
229229
throw new IllegalStateException("Unexpected exception thrown: " + e, e);
230230
}

Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/InternalErrorPage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class InternalErrorPage implements Page {
4242
private final VersionChecker versionChecker;
4343

4444
public InternalErrorPage(
45-
String template, String errorMsg, Throwable error,
45+
String template, String errorMsg, @Untrusted Throwable error,
4646
VersionChecker versionChecker
4747
) {
4848
this.template = template;

Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PageFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.djrapitops.plan.storage.database.queries.containers.ContainerFetchQueries;
3939
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
4040
import com.djrapitops.plan.storage.file.PlanFiles;
41+
import com.djrapitops.plan.utilities.dev.Untrusted;
4142
import com.djrapitops.plan.version.VersionChecker;
4243
import dagger.Lazy;
4344
import org.apache.commons.lang3.StringUtils;
@@ -219,7 +220,7 @@ public Page networkPage() throws IOException {
219220
);
220221
}
221222

222-
public Page internalErrorPage(String message, Throwable error) {
223+
public Page internalErrorPage(String message, @Untrusted Throwable error) {
223224
try {
224225
return new InternalErrorPage(
225226
getResource("error.html"), message, error,

Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseFactory.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ private Response forPage(Page page) {
9696
.build();
9797
}
9898

99-
private Response forInternalError(Throwable error, String cause) {
99+
private Response forInternalError(@Untrusted Throwable error, String cause) {
100100
return Response.builder()
101101
.setMimeType(MimeType.HTML)
102102
.setContent(pageFactory.internalErrorPage(cause, error).toHtml())
@@ -171,7 +171,7 @@ public Response rawPlayerPageResponse(UUID playerUUID) {
171171
.build();
172172
}
173173

174-
public Response javaScriptResponse(String fileName) {
174+
public Response javaScriptResponse(@Untrusted String fileName) {
175175
try {
176176
String content = UnaryChain.of(getResource(fileName).asString())
177177
.chain(this::replaceMainAddressPlaceholder)
@@ -189,7 +189,7 @@ public Response javaScriptResponse(String fileName) {
189189
.setStatus(200)
190190
.build();
191191
} catch (UncheckedIOException e) {
192-
return notFound404("JS File not found from jar: " + fileName + ", " + e);
192+
return notFound404("Javascript File not found");
193193
}
194194
}
195195

@@ -217,23 +217,23 @@ public Response cssResponse(@Untrusted String fileName) {
217217
.setStatus(200)
218218
.build();
219219
} catch (UncheckedIOException e) {
220-
return notFound404("CSS File not found from jar: " + fileName + ", " + e);
220+
return notFound404("CSS File not found");
221221
}
222222
}
223223

224-
public Response imageResponse(String fileName) {
224+
public Response imageResponse(@Untrusted String fileName) {
225225
try {
226226
return Response.builder()
227227
.setMimeType(MimeType.IMAGE)
228228
.setContent(getResource(fileName))
229229
.setStatus(200)
230230
.build();
231231
} catch (UncheckedIOException e) {
232-
return notFound404("Image File not found from jar: " + fileName + ", " + e);
232+
return notFound404("Image File not found");
233233
}
234234
}
235235

236-
public Response fontResponse(String fileName) {
236+
public Response fontResponse(@Untrusted String fileName) {
237237
String type;
238238
if (fileName.endsWith(".woff")) {
239239
type = MimeType.FONT_WOFF;
@@ -252,7 +252,7 @@ public Response fontResponse(String fileName) {
252252
.setContent(getResource(fileName))
253253
.build();
254254
} catch (UncheckedIOException e) {
255-
return notFound404("Font File not found from jar: " + fileName + ", " + e);
255+
return notFound404("Font File not found");
256256
}
257257
}
258258

Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseResolver.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import com.djrapitops.plan.delivery.webserver.resolver.swagger.SwaggerJsonResolver;
3434
import com.djrapitops.plan.delivery.webserver.resolver.swagger.SwaggerPageResolver;
3535
import com.djrapitops.plan.exceptions.WebUserAuthException;
36-
import com.djrapitops.plan.exceptions.connection.ForbiddenException;
3736
import com.djrapitops.plan.utilities.dev.Untrusted;
3837
import com.djrapitops.plan.utilities.logging.ErrorContext;
3938
import com.djrapitops.plan.utilities.logging.ErrorLogger;
@@ -173,8 +172,6 @@ public Response getResponse(@Untrusted Request request) {
173172
return tryToGetResponse(request);
174173
} catch (NotFoundException e) {
175174
return responseFactory.notFound404(e.getMessage());
176-
} catch (ForbiddenException e) {
177-
return responseFactory.forbidden403(e.getMessage());
178175
} catch (BadRequestException e) {
179176
return responseFactory.badRequest(e.getMessage(), request.getPath().asString());
180177
} catch (WebUserAuthException e) {
@@ -187,7 +184,6 @@ public Response getResponse(@Untrusted Request request) {
187184

188185
/**
189186
* @throws NotFoundException In some cases when page was not found, not all.
190-
* @throws ForbiddenException If the user is not allowed to see the page
191187
* @throws BadRequestException If the request did not have required things.
192188
*/
193189
private Response tryToGetResponse(@Untrusted Request request) {

Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/QueryJSONResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ private InputQueryDto parseInputQueryFromQueryParams(@Untrusted Request request)
164164
.orElseThrow(() -> new BadRequestException("'view' parameter not set (expecting json object {afterDate, afterTime, beforeDate, beforeTime})"));
165165
return new InputQueryDto(view, queryFilters);
166166
} catch (IOException e) {
167-
throw new BadRequestException("Failed to decode json: '" + q + "', " + e.getMessage());
167+
throw new BadRequestException("Failed to decode json");
168168
}
169169
}
170170

@@ -202,7 +202,7 @@ private Response buildAndStoreResponse(InputQueryDto input, Filter.Result result
202202
.setJSONContent(stored.json)
203203
.build();
204204
} catch (ParseException e) {
205-
throw new BadRequestException("'view' date format was incorrect (expecting afterDate dd/mm/yyyy, afterTime hh:mm, beforeDate dd/mm/yyyy, beforeTime hh:mm}): " + e.getMessage());
205+
throw new BadRequestException("'view' date format was incorrect (expecting afterDate dd/mm/yyyy, afterTime hh:mm, beforeDate dd/mm/yyyy, beforeTime hh:mm})");
206206
}
207207
}
208208

0 commit comments

Comments
 (0)