
掌握ChatGPT插件與自定義GPT
現在,轉到src/main/resources/templates文件夾并創建頁眉和頁腳模板文件。我們為模板選擇了mustache模板語法,但您可以按照自己喜歡的語法制作它們。
header.mustache
<html>
<head>
<title>{{title}}</title>
</head>
<body>
footer.mustache
</body>
</html>
最后,創建blog.mustache模板文件并添加以下 HTML:
blog.mustache
{{> header}}
<h1>{{title}}</h1>
<p>This is a test blog.</p>
{{> footer}}
好了,這就是您所需要的。現在,您可以在終端中輸入“gradle bootRun”來運行代碼,然后轉到 localhost:8080 查看您的網站。
簡單的博客頁面。
瞧!
如果您想更簡潔地了解項目進展情況,請探索 Kotlin 社區和Spring Boot 教程。
現在我們有一個使用 Kotlin 和 Spring Boot 運行的基本網站,讓我們來談談 HTTP 嚴格傳輸安全。
自誕生之日起,加密就一直是防止數據竊聽的靈丹妙藥。因此,保證使用適當的協議加密我們的交易對于任何網絡平臺提供安全性都至關重要。盡管網絡依賴 SSL/TLS 協議來加密和保護客戶端和服務器之間的交易,但確保所有交易都受到保護卻完全不同。
讓我們用一個基本場景來說明一下。
網站與用戶之間的典型通信流程首先需要向域發出 HTTP 請求。然后,如果相關服務器使用有效證書實施 SSL/TLS 并強制執行 HTTPS 重新路由,則用戶將被重定向 (301) 到具有 HTTPS 請求的同一站點。此流程可確保客戶端與服務器之間的所有通信都通過加密安全完成。
但事實并非如此。
請考慮以下場景。
毫無戒心的用戶試圖訪問我們的網站,試圖通過受感染的網絡(偽裝成合法的假冒接入點)訪問我們的服務器。在這種情況下,初始握手可能會以以下方式使受害者面臨漏洞。
我們剛剛解釋的這種攻擊稱為 SSL 剝離。它的工作原理是允許攻擊者充當通信中介。然后攻擊者可以指定受害者的安全協議,基本上剝奪客戶端的任何加密安全性。
不太好。那我們能做什么呢?
那么,這次攻擊中最關鍵的一步當然是受害者在開始時進行的初次握手。
要防止漏洞發生,需要確保瀏覽器僅使用加密方式與我們的服務器通信。而做到這一點的最佳方式就是明確地告訴瀏覽器這樣做。
這個流程本質上就是 HTTP 嚴格傳輸安全的含義,它是網絡安全的基石。
在大多數情況下,瀏覽器及其包含的安全功能為我們承擔了大部分繁重的工作,以確保用戶的安全。要使用 HSTS 實現必要的安全保護,我們需要做的就是將以下標頭添加到服務器響應中:
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
HSTS 標頭包含三個指令(一個必需,兩個可選)。
值得慶幸的是,Spring Security 依賴項默認包含此標頭。但是,如果您想自己動手或對標頭進行一些修改,您可以執行以下操作:
修改<hsts>元素如下:
<http>
<!-- ... -->
<headers>
<hsts
include-subdomains="true"
max-age-seconds="31536000" />
</headers>
</http>
類似地,您可以通過在配置文件中添加以下內容僅使用 HSTS:
@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.headers()
.httpStrictTransportSecurity()
.includeSubdomains(true)
.maxAgeSeconds(31536000);
}
}
此外,我們建議您在所有交易中強制使用 HTTPS。要在 Spring Boot 中實現此目的,請將以下內容添加到配置文件中:
server.port=8443
server.ssl.key.alias=demo-https
server.ssl.key-store-type=pkcs12
server.ssl.key-password=PASSWORD
server.ssl.key-store=classpath:demo-https.pkcs12
之后,確保創建適當的證書并將其包含在資源文件夾中。
最后,確保我們理解 HSTS 標頭很重要,但我們還必須意識到那些尚未準備好遵守該政策的網站會發生什么。
瀏覽器錯誤。
我們可以看到,一個錯誤導致我們的瀏覽器無法顯示該頁面。該錯誤表明服務器將此網站列為僅使用加密。然而,瀏覽器檢測到了一些可疑的東西。
通過閱讀錯誤,我們可以了解問題的可能來源是什么。
我們知道我們故意讓網站無法通過 HSTS 政策檢查。這意味著我們的下一步應該是確保正確設置加密。此外,如果我們是第一次部署 HSTS,我們必須有一個適當的實施計劃。
根據Scott Helme 的 HSTS 教程中的一些內容,下面是需要遵循的步驟清單。
按照這些步驟操作后,您將擁有一個僅強制使用 HTTPS 通信的網站。從那時起,所有用戶都將遵守該政策。
如今,加密是我們抵御攻擊者和惡意攻擊的最重要保護手段。然而,正如我們已經知道的,沒有絕對的解決方案,仍然有可能遭到高度復雜的攻擊。無論如何,實施 SSL/TLS 和 HSTS 政策對于保護幾乎所有網絡都相當有效。
文章來源:Kotlin HTTP Strict Transport Security Guide: What It Is and How to Enable It