summaryrefslogtreecommitdiff
path: root/clams-server/src/main/java/no/eliashaugsbakk
diff options
context:
space:
mode:
authorElias Haugsbakk <[email protected]>2026-07-23 01:09:58 +0200
committerElias Haugsbakk <[email protected]>2026-07-23 01:09:58 +0200
commit83da747720ced1d711548d8179e889af13df9404 (patch)
treed3caf1a0256afa2a50655675e661931aea5515a1 /clams-server/src/main/java/no/eliashaugsbakk
parenta7b97175975c7a2756d586e92b049a8f5fe081d0 (diff)
ai security "improvements"
Diffstat (limited to 'clams-server/src/main/java/no/eliashaugsbakk')
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java17
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/AuthService.java10
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/utils/MarkdownConverter.java2
3 files changed, 26 insertions, 3 deletions
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java
index ada9847..05e92d2 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java
@@ -5,6 +5,7 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.nio.file.attribute.PosixFilePermissions;
import java.security.SecureRandom;
import java.util.Base64;
import java.util.Properties;
@@ -36,11 +37,24 @@ public class AppConfig {
Files.createDirectories(storageDir);
System.out.println("Created application storage directory at: " + storageDir.toAbsolutePath());
}
+ setOwnerOnlyPermissions(storageDir);
} catch (IOException e) {
System.err.println("Warning: Could not verify or create storage directory: " + e.getMessage());
}
}
+ private void setOwnerOnlyPermissions(Path path) throws IOException {
+ if (!Files.exists(path)) {
+ return;
+ }
+
+ try {
+ Files.setPosixFilePermissions(path, PosixFilePermissions.fromString("rwx------"));
+ } catch (UnsupportedOperationException e) {
+ // Ignore on non-POSIX file systems.
+ }
+ }
+
private void generateDefaultConfig() {
try {
Files.createDirectories(configPath.getParent());
@@ -49,6 +63,7 @@ public class AppConfig {
new SecureRandom().nextBytes(tokenBytes);
String token = Base64.getUrlEncoder().withoutPadding().encodeToString(tokenBytes);
+ Files.createDirectories(configPath.getParent());
try (BufferedWriter writer = Files.newBufferedWriter(configPath)) {
writer.write(String.format("""
storage_location=./data/
@@ -56,8 +71,8 @@ public class AppConfig {
authorization_token=%s
""", token));
}
+ setOwnerOnlyPermissions(configPath);
IO.println("Generated a default configuration file at: " + configPath);
- IO.println("Generated authentication token: " + token);
} catch (IOException e) {
System.err.println("Could not create default config file: " + e.getMessage());
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/AuthService.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/AuthService.java
index e52613b..cb7a9ff 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/AuthService.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/AuthService.java
@@ -1,5 +1,7 @@
package no.eliashaugsbakk.clams.server.service;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
import no.eliashaugsbakk.clams.server.config.AppConfig;
public class AuthService {
@@ -14,6 +16,12 @@ public class AuthService {
return false;
}
- return incomingToken.equals(tokenHash);
+ try {
+ return MessageDigest.isEqual(
+ tokenHash.getBytes(StandardCharsets.UTF_8),
+ incomingToken.getBytes(StandardCharsets.UTF_8));
+ } catch (IllegalArgumentException e) {
+ return false;
+ }
}
}
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/utils/MarkdownConverter.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/utils/MarkdownConverter.java
index a0d24c8..ef855d9 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/utils/MarkdownConverter.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/utils/MarkdownConverter.java
@@ -7,7 +7,7 @@ import org.commonmark.renderer.html.HtmlRenderer;
public class MarkdownConverter {
public static String convertToHtml(String markdown) {
Parser parser = Parser.builder().build();
- HtmlRenderer renderer = HtmlRenderer.builder().build();
+ HtmlRenderer renderer = HtmlRenderer.builder().escapeHtml(true).build();
Node document = parser.parse(markdown);
return renderer.render(document);