[Day 12] 要準備連線資料了!設置 Ktor 的連線資訊

邏輯知道怎麼撰寫了,前端畫面也做好了,下一步我們開始要連看看資料庫了。

不過在正式連資料庫之前,我們要先學學怎麼設置連線資訊,也就是資料庫的帳號密碼等等。

為什麼要特別設置連線資訊

為什麼不直接把連線資訊寫在程式碼裡面,要特別設置連線資訊呢?

這是因為,有時候我們的服務被攻擊時,僅僅被取得的是程式碼,不包含主機連線的資訊。

這時如果我們的程式碼裡面有包含資料庫連線的資訊,那攻擊者就有機會可以連線到資料庫,進行進一步的攻擊。

把敏感的資訊和程式碼分開,是一個資安上要特別注意的地方。

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 我們就成功了!