[研究]GCB,IIS,httpOnlyCookies可否設定為 True,自動判斷讀取的 Cookie 名稱是否是 ASP.NET 系統 Cookie
2025-11-10
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
********************************************************************************
PowerShell
# 設定專案根目錄
$projectRoot = "C:\YourProjectPath" # <-- 改成你的專案路徑
# 支援的檔案類型
$extensions = @("*.js", "*.aspx", "*.cshtml", "*.html")
# 建立空的結果集合
$results = @()
foreach ($ext in $extensions) {
$files = Get-ChildItem -Path $projectRoot -Recurse -Include $ext -ErrorAction SilentlyContinue
foreach ($file in $files) {
# 讀取檔案內容,每行為字串陣列
$lines = Get-Content $file.FullName -ErrorAction SilentlyContinue
foreach ($line in $lines) {
if ($line -match "document\.cookie") {
$results += [PSCustomObject]@{
File = $file.FullName
LinePreview = $line.Trim()
}
}
}
}
}
# 輸出結果
if ($results.Count -eq 0) {
Write-Host "專案中未發現使用 document.cookie 的程式碼。"
} else {
Write-Host "專案中可能受 HttpOnlyCookies 影響的程式碼:"
$results | Format-Table -AutoSize
}
# 可選:將結果輸出到 CSV
$results | Export-Csv -Path "$projectRoot\CookieScanResults.csv" -NoTypeInformation
Write-Host "結果已輸出至 CookieScanResults.csv"
|
下圖,建議用 Notepad++ 存檔,中文字會變成亂碼。
下圖,建議用 Notepad (記事本) 存檔,用 ANSI、UniCode、UTF-8皆可。
方案1實際測試結果
其實之前已經把整個 packages.config 中的套件問過一次 ChatGPT,說都沒問題,實際用 PowerShell 程式測,httpOnlyCookies照 GCB 設定為 True, 可能導致 js-cookie 2.2.1 套件功能異常;實際檢視,發現確實有變更 document.cookie 值得地方,所以 httpOnlyCookies 不可以設定為 True。
| File | LinePreview |
| D:\WebSolution1\packages\js-cookie.2.2.1\content\Scripts\js-cookie\js.cookie-2.2.1.min.js | !function(a){var b;if("function"==typeof define&&define.amd&&(define(a),b=!0),"object"==typeof exports&&(module.exports=a(),b=!0),!b){var c=window.Cookies,d=window.Cookies=a();d.noConflict=function(){return window.Cookies=c,d}}}(function(){function a(){for(var a=0,b={};a |
| D:\WebSolution1\packages\js-cookie.2.2.1\content\Scripts\js-cookie\js.cookie.js | return (document.cookie = key + '=' + value + stringifiedAttributes); |
| D:\WebSolution1\packages\js-cookie.2.2.1\content\Scripts\js-cookie\js.cookie.js | var cookies = document.cookie ? document.cookie.split('; ') : []; |
| D:\WebSolution1\WebApplication1\Scripts\js-cookie\js.cookie-2.2.1.min.js | !function(a){var b;if("function"==typeof define&&define.amd&&(define(a),b=!0),"object"==typeof exports&&(module.exports=a(),b=!0),!b){var c=window.Cookies,d=window.Cookies=a();d.noConflict=function(){return window.Cookies=c,d}}}(function(){function a(){for(var a=0,b={};a |
| D:\WebSolution1\WebApplication1\Scripts\js-cookie\js.cookie.js | return (document.cookie = key + '=' + value + stringifiedAttributes); |
| D:\WebSolution1\WebApplication1\Scripts\js-cookie\js.cookie.js | var cookies = document.cookie ? document.cookie.split('; ') : []; |
方案2實際測試結果, httpOnlyCookies 不可以設定為 True,受影響套件 Modernizr3.4.0
| File | LinePreview |
| D:\WebSolution2\WebApplication1\Scripts\modernizr-3.4.0.js | // try..catch because some in situations `document.cookie` is exposed but throws a |
| D:\WebSolution2\WebApplication1\Scripts\modernizr-3.4.0.js | document.cookie = 'cookietest=1'; |
| D:\WebSolution2\WebApplication1\Scripts\modernizr-3.4.0.js | var ret = document.cookie.indexOf('cookietest=') != -1; |
| D:\WebSolution2\WebApplication1\Scripts\modernizr-3.4.0.js | document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT'; |
| D:\WebSolution2\packages\Modernizr.New.3.4.0\Content\Scripts\modernizr-3.4.0.js | // try..catch because some in situations `document.cookie` is exposed but throws a |
| D:\WebSolution2\packages\Modernizr.New.3.4.0\Content\Scripts\modernizr-3.4.0.js | document.cookie = 'cookietest=1'; |
| D:\WebSolution2\packages\Modernizr.New.3.4.0\Content\Scripts\modernizr-3.4.0.js | var ret = document.cookie.indexOf('cookietest=') != -1; |
| D:\WebSolution2\packages\Modernizr.New.3.4.0\Content\Scripts\modernizr-3.4.0.js | document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT'; |
方案3實際測試結果,同方案2。
方案4實際測試結果,未發現受影響套件。
(完)
相關


沒有留言:
張貼留言