Cosenseのhelmet npmを3から8に更新する
結果がけっこう違うのでCSP headerを1つずつ見ていく
app
code:3_app
HTTP/1.1 200 OK
Server: nginx/1.27.4
Date: Mon, 03 Mar 2025 02:25:45 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 5607
Connection: keep-alive
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Referrer-Policy: same-origin
Content-Security-Policy: connect-src 'self' i.gyazo.com t.gyazo.com ws://localhost:4000 api.openai.com *.openai.azure.com maps.googleapis.com bedrock.ap-northeast-1.amazonaws.com bedrock-runtime.ap-northeast-1.amazonaws.com bedrock-agent.ap-northeast-1.amazonaws.com bedrock-agent-runtime.ap-northeast-1.amazonaws.com https://upload.gyazo.com https://storage.googleapis.com https://o88618.ingest.sentry.io www.google.com; default-src 'self'; font-src 'self' cdnjs.cloudflare.com fonts.gstatic.com; frame-src 'self' www.google.com www.youtube.com player.vimeo.com anchor.fm podcasters.spotify.com embed-standalone.spotify.com gyazo.com *.gyazo.com helpfeel-tweaks.helpfeel.com js.stripe.com; img-src * data: blob:; media-src *; script-src 'self' cdnjs.cloudflare.com maps.googleapis.com 'unsafe-eval' helpfeel-tweaks.helpfeel.com js.stripe.com www.google.com www.gstatic.com; style-src 'self' fonts.googleapis.com cdnjs.cloudflare.com 'unsafe-inline' helpfeel-tweaks.helpfeel.com; worker-src 'self'; form-action 'self' X-Content-Security-Policy: connect-src 'self' i.gyazo.com t.gyazo.com ws://localhost:4000 api.openai.com *.openai.azure.com maps.googleapis.com bedrock.ap-northeast-1.amazonaws.com bedrock-runtime.ap-northeast-1.amazonaws.com bedrock-agent.ap-northeast-1.amazonaws.com bedrock-agent-runtime.ap-northeast-1.amazonaws.com https://upload.gyazo.com https://storage.googleapis.com https://o88618.ingest.sentry.io www.google.com; default-src 'self'; font-src 'self' cdnjs.cloudflare.com fonts.gstatic.com; frame-src 'self' www.google.com www.youtube.com player.vimeo.com anchor.fm podcasters.spotify.com embed-standalone.spotify.com gyazo.com *.gyazo.com helpfeel-tweaks.helpfeel.com js.stripe.com; img-src * data: blob:; media-src *; script-src 'self' cdnjs.cloudflare.com maps.googleapis.com 'unsafe-eval' helpfeel-tweaks.helpfeel.com js.stripe.com www.google.com www.gstatic.com; style-src 'self' fonts.googleapis.com cdnjs.cloudflare.com 'unsafe-inline' helpfeel-tweaks.helpfeel.com; worker-src 'self'; form-action 'self' X-WebKit-CSP: connect-src 'self' i.gyazo.com t.gyazo.com ws://localhost:4000 api.openai.com *.openai.azure.com maps.googleapis.com bedrock.ap-northeast-1.amazonaws.com bedrock-runtime.ap-northeast-1.amazonaws.com bedrock-agent.ap-northeast-1.amazonaws.com bedrock-agent-runtime.ap-northeast-1.amazonaws.com https://upload.gyazo.com https://storage.googleapis.com https://o88618.ingest.sentry.io www.google.com; default-src 'self'; font-src 'self' cdnjs.cloudflare.com fonts.gstatic.com; frame-src 'self' www.google.com www.youtube.com player.vimeo.com anchor.fm podcasters.spotify.com embed-standalone.spotify.com gyazo.com *.gyazo.com helpfeel-tweaks.helpfeel.com js.stripe.com; img-src * data: blob:; media-src *; script-src 'self' cdnjs.cloudflare.com maps.googleapis.com 'unsafe-eval' helpfeel-tweaks.helpfeel.com js.stripe.com www.google.com www.gstatic.com; style-src 'self' fonts.googleapis.com cdnjs.cloudflare.com 'unsafe-inline' helpfeel-tweaks.helpfeel.com; worker-src 'self'; form-action 'self' x-assets-version: assets-20250303-022434
ETag: W/"15e7-LoyLeocl3hpkrUaNTx5hqBiSjsU"
Vary: Accept-Encoding
Set-Cookie: connect.sid=s%3A-WNyqfV24LSkXh_LNvquCLV5DxcWfNr5.%2BrdYIQubPkQD0c3ITgO8QOvkiNA%2FaShc7gap08hGRGk; Path=/; Expires=Fri, 02 May 2025 02:25:45 GMT; HttpOnly
X-Content-Security-PolicyとX-WebKit-CSPとContent-Security-Policyの3つに同じ値がセットされている
code:8_app
HTTP/1.1 200 OK
Server: nginx/1.27.4
Date: Mon, 03 Mar 2025 02:22:26 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 5607
Connection: keep-alive
Content-Security-Policy: connect-src 'self' i.gyazo.com t.gyazo.com ws://localhost:4000 api.openai.com *.openai.azure.com maps.googleapis.com bedrock.ap-northeast-1.amazonaws.com bedrock-runtime.ap-northeast-1.amazonaws.com bedrock-agent.ap-northeast-1.amazonaws.com bedrock-agent-runtime.ap-northeast-1.amazonaws.com https://upload.gyazo.com https://storage.googleapis.com https://o88618.ingest.sentry.io www.google.com;default-src 'self';font-src 'self' cdnjs.cloudflare.com fonts.gstatic.com;frame-src 'self' www.google.com www.youtube.com player.vimeo.com anchor.fm podcasters.spotify.com embed-standalone.spotify.com gyazo.com *.gyazo.com helpfeel-tweaks.helpfeel.com js.stripe.com;img-src * data: blob:;media-src *;script-src 'self' cdnjs.cloudflare.com maps.googleapis.com 'unsafe-eval' helpfeel-tweaks.helpfeel.com js.stripe.com www.google.com www.gstatic.com;style-src 'self' fonts.googleapis.com cdnjs.cloudflare.com 'unsafe-inline' helpfeel-tweaks.helpfeel.com;worker-src 'self';form-action 'self' Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
x-assets-version: assets-20250303-021918
ETag: W/"15e7-3mDxek/Zn6Ie5iNN2k6Rd4gpWCE"
Vary: Accept-Encoding
Set-Cookie: connect.sid=s%3AEzgRGoQGfY-ZVuvFUDr7VTa3DzUSwctg.QJgxNcSL4uytb3Hd0TllwWuIMz%2FlZl2ccAjLygNSPHs; Path=/; Expires=Fri, 02 May 2025 02:22:26 GMT; HttpOnly
X-Content-Security-PolicyとX-WebKit-CSPがなくなって、Content-Security-Policyだけになった
無効化するという意味で0にしたのかもしれないが、全くセットしない方が良いのではないか?shokai.icon
そのようですhata.icon
same-originに戻しても良いと思うshokai.icon
新しく追加されたheader
same-originが指定されている。ヨシshokai.icon
新しく追加されたheader
same-originが指定されている
外部サイトからimgを読み込めなくなると、OGPやtwitter cardが困るのではないか?shokai.icon
まあそれを検証するのは一旦デプロイする必要があるので、一旦ヨシshokai.icon
新しく追加されたheader
?1が指定されている
とりあえずヨシshokai.icon
新しく追加されたheader
これ無効化してなかったっけ?shokai.icon
環境変数FORCE_SSLで制御していた気がする
下手にこのヘッダ付けてしまうと、オンプレ版でhttpでしか運用していない場合にhttpsを矯正されてしまってアクセスできなくなる
いやもういいか。さすがにshokai.icon
当時はオンプレ版のユーザーをSSLの無いイントラネットと想定していた
今はイントラネットでもSSLあるだろうさすがに
とりあえずこのままでヨシshokai.icon
新しく追加されたheader
offが指定されている
なぜoffにするんだろう?何も指定しなくていいのではないか?shokai.icon
helmetのデフォルトがoffなので、このままでヨシshokai.icon
新しく追加されたheader
noopenが指定されている
古いIE用らしい。ヨシshokai.icon
Flash、Silverlight、Acrobat向け
noneが指定されている。ヨシshokai.icon
これまでやってた構成が使えなくなったのではないか?shokai.icon
express routerの最初の方でcommonHelmetを付ける
その先のappのrouterでappHelmetを付ける
commonHelmetの内容が反映されてない気がするshokai.icon
されてない。2つのhelmetを重ねる事ができなくなったようだ
もうデフォルトをカスタマイズする必要が無いな、という気分になった
useDefaults: trueを付けて代わりとしたい
ローカル開発環境で出しても問題なし
localhostでは、これを出してもブラウザは無視する
こうなった
code:8_app_2
HTTP/1.1 200 OK
Server: nginx/1.27.4
Date: Mon, 03 Mar 2025 05:21:52 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 5607
Connection: keep-alive
Content-Security-Policy: connect-src 'self' i.gyazo.com t.gyazo.com ws://localhost:4000 api.openai.com *.openai.azure.com maps.googleapis.com bedrock.ap-northeast-1.amazonaws.com bedrock-runtime.ap-northeast-1.amazonaws.com bedrock-agent.ap-northeast-1.amazonaws.com bedrock-agent-runtime.ap-northeast-1.amazonaws.com https://upload.gyazo.com https://storage.googleapis.com https://o88618.ingest.sentry.io www.google.com;default-src 'self';font-src 'self' cdnjs.cloudflare.com fonts.gstatic.com;frame-src 'self' www.google.com www.youtube.com player.vimeo.com anchor.fm podcasters.spotify.com embed-standalone.spotify.com gyazo.com *.gyazo.com helpfeel-tweaks.helpfeel.com js.stripe.com;img-src * data: blob:;media-src *;script-src 'self' cdnjs.cloudflare.com maps.googleapis.com 'unsafe-eval' helpfeel-tweaks.helpfeel.com js.stripe.com www.google.com www.gstatic.com;style-src 'self' fonts.googleapis.com cdnjs.cloudflare.com 'unsafe-inline' helpfeel-tweaks.helpfeel.com;worker-src 'self';form-action 'self';base-uri 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
x-assets-version: assets-20250303-050445
ETag: W/"15e7-neeOv8VPfWkYjpXbPhCHa0zqpVc"
Vary: Accept-Encoding
Set-Cookie: connect.sid=s%3AC8fBwD1qkozHJfn3mAmlHwrji7X9JhDQ.jECE9EzEAwTrYPr2k9aETh5JMgPpWuvc%2BQTjAkeFK0U; Path=/; Expires=Fri, 02 May 2025 05:21:52 GMT; HttpOnly
確認項目
LP
contact form
reCAPTCHA
app
Google map
YouTube埋め込み
GCSアップロード
Gyazoアップロード
Gyazo埋め込み
静止画、動画
最終的にこうなって、リリースしたshokai.icon (2025/3/3 14:58)
ライブラリそのものの説明はDevin.iconにまかせつつ、変更内容にフォーカスしてプルリク概要欄を書き直した
helmetを重ねる事をやめたが
Devin.iconの実装があったからこそ短時間でたどり着けたと思う
https://scrapbox.io/files/67f2c7bbb651ce3738dd16ee.png
ところで、どこでhelmetを重ねられなくなったんだろう?