邏輯知道怎麼撰寫了,前端畫面也做好了,下一步我們開始要連看看資料庫了。
不過在正式連資料庫之前,我們要先學學怎麼設置連線資訊,也就是資料庫的帳號密碼等等。
為什麼不直接把連線資訊寫在程式碼裡面,要特別設置連線資訊呢?
這是因為,有時候我們的服務被攻擊時,僅僅被取得的是程式碼,不包含主機連線的資訊。
這時如果我們的程式碼裡面有包含資料庫連線的資訊,那攻擊者就有機會可以連線到資料庫,進行進一步的攻擊。
把敏感的資訊和程式碼分開,是一個資安上要特別注意的地方。
application.conf
連線資訊的內容,Ktor 是寫在 resource 的 application.conf
裡面。
ktor {
deployment {
port = 8080
port = ${?PORT}
}
application {
modules = [ com.example.ApplicationKt.module ]
}
}
這個檔案的結構還蠻好理解的,我們在裡面加上資料庫的連線內容:
ktor {
deployment {
port = 8080
port = ${?PORT}
}
application {
modules = [ com.example.ApplicationKt.module ]
}
database {
user = "default"
password = "secret"
}
}
接著就是在程式裡面加入這些資訊了,我們用 environment.config.property()
來嘗試取得密碼的資訊:
get("/password") {
val password = environment.config.property("ktor.database.password").getString()
call.respondText(password, contentType = ContentType.Text.Plain)
}
連線 http://127.0.0.1:8080/password 可以看到 secret
我們就成功了!