在 .NET Core + Vue.js 專案中實作 CSRF 防護
在 .NET Core + Vue.js 專案中實作 CSRF 防護前言最近在進行安全性掃描時,發現了 CSRF (Cross-Site Request Forgery) 的漏洞。本文將分享如何在 .NET Core Web API 搭配 Vue.js 的專案中實作完整的 CSRF 防護機制,並提供詳細的最佳實作建議。 CSRF 是什麼?CSRF 是一種強迫使用者在他們已經通過身份驗證的網站上執行非預期操作的攻擊。 攻擊場景示例考慮以下實際場景: 使用者登入了網路銀行 同時瀏覽了含有惡意程式碼的網站 惡意網站自動發送請求到網路銀行 由於使用者已登入,請求會帶著有效的 Cookie 執行 實際攻擊範例12345678<!-- 惡意網站的 HTML --><form action="https://bank.example.com/transfer" method="POST" id="hack-form"> <input type="hidden"...
Hexo 圖片外掛套件使用教學與踩雷指南
Hexo 圖片外掛套件使用教學與踩雷指南最近發現圖片處理真的有夠麻煩 (╯°□°)╯︵ ┻━┻特別是在使用 hexo-asset-image 和 hexo-image-link 這兩個套件時,竟然發現它們在最新版本都有 BUG!?來分享一下我的經驗,希望能幫大家省下一些除錯時間 (。・ω・。) 為什麼要用本地圖片?在開始之前,先來聊聊為什麼要選擇在本地存放圖片,而不是使用圖床: 穩定性超重要!第三方圖床說不定哪天就掛掉了 打包備份超方便!文章和圖片都在同一個資料夾 離線也能看!不用擔心網路連線問題 整理方便!圖片跟文章放在同名資料夾,好管理 目前遇到的問題hexo-asset-image 的狀況最新版本在處理圖片路徑時會出現以下問題: 圖片路徑重複出現 預覽時正常,但發布後圖片掛掉 有時會莫名其妙多出資料夾層級 例如原始路徑: 1/2024/03/07/文章名稱/圖片.jpg 結果變成: 1/2024/03/07/文章名稱/03/07/文章名稱/圖片.jpg 或是 域名是xxx.io的情況下,圖片路徑會從原本/xxx.jpg變成...
Content Security Policy 安全性與實用性平衡指南
Content Security Policy 安全性與實用性平衡指南前言Content Security Policy 是一個額外的安全層,用於檢測和減輕特定類型的攻擊,包括跨站腳本 (XSS) 和數據注入等。通過仔細配置 CSP,可以大幅降低網站被攻擊的風險。本指南旨在提供一個實務上的 CSP 配置方案,在確保網站安全性的同時,也顧及開發效率與維護性。此配置適用於大多數企業級網站專案,並提供與資安稽核單位溝通的建議。 基本配置方法1. 透過 HTTP Header 設定1Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://trusted-cdn.com; style-src 'self' 'unsafe-inline' https://trusted-cdn.com; img-src...
IIS環境下使用C#操作LibreOffice進行檔案轉換
在 IIS 環境下使用 C# 操作 LibreOffice 進行檔案轉換問題背景在 Web 應用程式中,我們經常需要提供檔案格式轉換的功能。本文將詳細說明如何在 IIS 環境下,使用 C# 程式碼呼叫 LibreOffice 進行檔案格式轉換(例如:Excel 轉 ODS),並完整解決執行過程中可能遇到的權限問題。 環境需求 Windows Server 環境 IIS 網頁伺服器 LibreOffice 套件 .NET Framework 開發環境 可能遇到的問題 使用一般使用者帳號無法執行轉換 IIS ApplicationPool 權限不足 檔案轉換過程沒有回應 程式執行但找不到輸出檔案 權限不足導致程式無法執行 完整解決方案1. IIS 應用程式集區設定首先確認 IIS 應用程式集區的設定: 開啟 IIS 管理員 找到您的應用程式集區(例如:DefaultAppPool) 右鍵 → 進階設定 設定以下項目: 載入使用者設定檔 = True 識別 = ApplicationPoolIdentity 2. Windows...
SQL Server 空間查詢操作指南
SQL Server 空間查詢操作指南前言在處理地理資訊系統(GIS)時,SQL Server 提供了一系列強大的空間查詢工具。本文將詳細介紹這些工具的使用方法,幫助您更有效地處理空間資料。 一、基本空間關係判斷1. 包含關係123456789-- A.STContains(B):判斷 A 是否包含 B-- 最常用於判斷點位是否在某個範圍內SELECT * FROM Points WHERE @polygon.STContains(point_geometry) = 1-- A.STWithin(B):判斷 A 是否在 B 內-- 與 STContains 相反,從點位角度判斷SELECT * FROM Points WHERE point_geometry.STWithin(@polygon) = 1 2. 相交關係12345678-- A.STIntersects(B):判斷 A 和 B 是否相交-- 適合判斷兩個範圍是否有重疊SELECT * FROM ZonesWHERE zone1_geometry.STIntersects(zone2_geometry) =...
資料庫連線池爆掉救火秘笈!如何優雅地處理 SQL Server 連線危機
前言身為後端工程師,你是否遇過這樣的情況: 系統突然變得超級慢 網頁一直轉圈圈 收到「已超過連線逾時的設定」錯誤訊息 如果有,恭喜你!你可能遇到了資料庫連線池爆掉的問題。今天就來分享一個真實案例,看看如何從診斷到解決這個棘手的問題。 問題診斷當你遇到以下錯誤訊息時,很可能是連線池出問題了: 1System.InvalidOperationException: '已超過連線逾時的設定。在取得集區連線之前超過逾時等待的時間,可能的原因為所有的共用連線已在使用中,並已達共用集區大小的最大值。' 快速診斷方法首先,我們可以使用以下 SQL 指令來查看目前的連線狀況: 12345678910SELECT DB_NAME(dbid) as DatabaseName, COUNT(dbid) as NumberOfConnections, loginame as LoginName, status, hostname as HostName, program_name as ProgramNameFROM...
如何快速查詢資料庫檢視表(View)的欄位資訊
如何快速查詢資料庫檢視表(View)的欄位資訊今天遇到長官要求提供所需的資料訊息,因為要求的資料欄位是由多個資料表組合而成時,要一個一個去查看原始資料表相當費時。本文將介紹如何使用 SQL 指令快速查詢檢視表的欄位資訊。 為什麼需要這個查詢? 快速了解檢視表的結構 檢查欄位的資料類型和限制 節省查看原始資料表的時間 方便進行資料庫文件製作 各資料庫系統的查詢方式Microsoft SQL Server1234567891011121314SELECT c.name AS ColumnName, t.name AS DataType, c.max_length AS MaxLength, c.precision AS NumericPrecision, c.scale AS NumericScale, c.is_nullable AS IsNullable, ISNULL(dc.definition, '') AS DefaultValueFROM sys.views vINNER JOIN sys.columns...
SQL Server 備份檔案異常增長的排查指南
SQL Server 備份檔案異常增長的排查指南在管理 SQL Server 資料庫時,有時會遇到備份檔案大小突然增加的情況。即使資料表中的資料量沒有明顯增長,備份檔案卻莫名變大了好幾 GB,這時該如何進行排查呢?本文將介紹幾個常見的原因和解決方案。 常見原因分析1. 交易記錄檔(Transaction Log)過大交易記錄檔是記錄資料庫所有異動的檔案,如果沒有定期做記錄檔備份或截斷,可能會導致檔案持續成長。 診斷方式: 1DBCC SQLPERF(LOGSPACE); 這個指令可以顯示所有資料庫的記錄檔使用狀況。 2. 索引碎片化頻繁的資料異動可能造成索引碎片化,進而影響備份檔案大小。 診斷方式: 123456789SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName, ind.name AS IndexName, indexstats.avg_fragmentation_in_percentFROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL,...
實作零信任架構的 .NET Core Web API 教學
實作零信任架構的 .NET Core Web API 教學前言在現代應用程式開發中,安全性是一個不能忽視的重要議題。零信任(Zero Trust)安全模型提供了一個「永不信任,始終驗證」的架構方針,特別適合用於建構安全的 Web API。本文將詳細說明如何在 .NET Core Web API 中實作零信任架構。 零信任架構核心概念零信任架構建立在以下幾個核心原則上: 永遠驗證 - 對每個請求都進行身分驗證 最小權限 - 只給予必要的存取權限 假設破壞 - 假設網路環境已被入侵 全程加密 - 所有通訊都需要加密 持續監控 - 記錄與分析所有活動 專案設定首先建立一個新的 .NET Core Web API 專案: 12dotnet new webapi -n ZeroTrustApicd ZeroTrustApi 安裝必要的 NuGet 套件:1234dotnet add package Microsoft.AspNetCore.Authentication.JwtBearerdotnet add package...
HTMX:網頁開發的優雅回歸
HTMX:網頁開發的優雅回歸在這幾年的網頁開發生態中,我們看到一個有趣的現象:HTMX 這類強調後端渲染的技術框架逐漸受到歡迎。這個趨勢某種程度上打破了過去「前後端分離」的主流思維,值得我們深入探討。 前後端分離時代的挑戰過去幾年,前後端分離的開發模式一直是主流。這種架構確實帶來許多好處: 前端團隊可以專注在使用者體驗 後端專注在商業邏輯與資料處理 API 可以服務多種客戶端 更容易做到水平擴展 但隨著時間推移,開發者也逐漸體會到這種架構的一些痛點: 需要維護兩個獨立的程式碼庫 狀態管理變得複雜 開發門檻提高 建置與部署流程變得繁瑣 效能優化需要更多心力 HTMX:簡單而強大HTMX 提供了一個更簡單的解決方案。它讓我們能夠直接在 HTML 中使用屬性來處理互動,而不需要寫大量的 JavaScript 程式碼。 基本語法示例:12345<button hx-post="/submit" hx-target="#result" hx-swap="outerHTML"> ...
