File tree Expand file tree Collapse file tree 3 files changed +19
-1
lines changed
src/main/kotlin/dev/suresh/routes Expand file tree Collapse file tree 3 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -174,6 +174,7 @@ dependencies {
174
174
implementation(libs.ktor.server.compression)
175
175
implementation(libs.ktor.server.cors)
176
176
implementation(libs.ktor.server.hsts)
177
+ implementation(libs.ktor.server.csrf)
177
178
implementation(libs.ktor.server.rate.limit)
178
179
implementation(libs.ktor.server.double.receive)
179
180
implementation(libs.ktor.server.host.common)
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ import io.github.oshai.kotlinlogging.KLogger
11
11
import io.github.oshai.kotlinlogging.KotlinLogging
12
12
import io.ktor.http.*
13
13
import io.ktor.server.application.*
14
+ import io.ktor.server.plugins.csrf.CSRF
14
15
import io.ktor.server.response.*
15
16
import io.ktor.server.routing.*
16
17
import io.ktor.server.sessions.*
@@ -36,12 +37,27 @@ fun Routing.services() {
36
37
call.respondText(" Session created" )
37
38
}
38
39
39
- get( " / " ) {
40
+ get {
40
41
val session = call.sessions.get<CookieSession >()
41
42
call.respondText(" Current Session: $session " )
42
43
}
43
44
}
44
45
46
+ route(" /csrf" ) {
47
+ install(CSRF ) {
48
+ allowOrigin(" https://localhost:8080" )
49
+ originMatchesHost()
50
+ checkHeader(" X-CSRF" ) { csrfHeader ->
51
+ val originHeader = request.headers[HttpHeaders .Origin ]
52
+ csrfHeader == originHeader?.hashCode()?.toString(32 )
53
+ }
54
+
55
+ onFailure { respondText(" Access denied!" , status = HttpStatusCode .Forbidden ) }
56
+ }
57
+
58
+ post { call.respondText(" CSRF check passed!" ) }
59
+ }
60
+
45
61
wasm()
46
62
}
47
63
Original file line number Diff line number Diff line change @@ -342,6 +342,7 @@ ktor-server-call-logging = { module = "io.ktor:ktor-server-call-logg
342
342
ktor-server-call-id = { module = " io.ktor:ktor-server-call-id" , version.ref = " ktor" }
343
343
ktor-server-cors = { module = " io.ktor:ktor-server-cors" , version.ref = " ktor" }
344
344
ktor-server-hsts = { module = " io.ktor:ktor-server-hsts" , version.ref = " ktor" }
345
+ ktor-server-csrf = { module = " io.ktor:ktor-server-csrf" , version.ref = " ktor" }
345
346
ktor-server-swagger = { module = " io.ktor:ktor-server-swagger" , version.ref = " ktor" }
346
347
ktor-server-openapi = { module = " io.ktor:ktor-server-openapi" , version.ref = " ktor" }
347
348
ktor-server-http-redirect = { module = " io.ktor:ktor-server-http-redirect" , version.ref = " ktor" }
You can’t perform that action at this time.
0 commit comments