Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
そのNext.js(Server Actions)の セキュリティを意識できていますか?(Te...
Search
Ken Watanabe
June 05, 2025
1
190
そのNext.js(Server Actions)の セキュリティを意識できていますか?(Techbowl&カミナシの勉強会 on 2025/5/30 @Kaminashi )
Ken Watanabe
June 05, 2025
Tweet
Share
Featured
See All Featured
Scaling GitHub
holman
462
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Into the Great Unknown - MozCon
thekraken
40
2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Thoughts on Productivity
jonyablonski
69
4.8k
How STYLIGHT went responsive
nonsquared
100
5.7k
A designer walks into a library…
pauljervisheath
207
24k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Transcript
そのNext.js(Server Actions)の セキュリティを意識できていますか? StatHackカンパニー 渡邉健 Techbowl&カミナシの勉強会 in 2025/5/30 @Kaminashi 5F
Kaminashiではプロダクトをリリースする前に Production Readiness Checkをしています リリースするにあたり、Kaminashiの定める満 たすべきセキュリティ要件を自社のセキュリ ティエンジニアともに確認します (2hours~) 今回はそれを踏まえKaminashiでも導入事例の 多いNext.js特有の意識し損ねそうな点を一部
抜粋します はじめに https://kaminashi-developer.hatenab log.jp/entry/2025/05/16/090000
• Next.js 14以降 Next.jsは大きく変わった ◦ その中で最大のフロントエンドコミュニティでの変化の一つ Server Actions Next.jsはじめましての方に向けて
従来のアーキテクチャ 従来のアーキテクチャと比較したServer Actions フロントエンドとAPIの分離 API (Express) フロントエンド (React) fetch API
Server Actionsによる置き換え (Next.js 15) 従来のアーキテクチャと比較したServer Actions Server Actionsによる クライアント・サーバのやり取り サーバの関数を呼ぶ
(実態は中でFetchが呼 ばれる) ‘use server’をつけることで server内で実行される関数に 関数呼び出しだけサーバとの通信も完結 する、圧倒的記述量の少なさっ API・フロント開発をまとめてできちゃう
やっていることはただのFetch 内部の通信をDebugしてみよう Next.jsが内部で隠蔽するPOSTリクエスト curlでも、もちろん レスポンスが帰ってくる
Pros • 記述量が圧倒的に少ない! • APIをデプロイしなくていいぶん運用が楽! Cons • フロントエンドとサーバの秘密情報の距離が小さくなった ◦ “use
server”をつけそのこねるだけで、サーバの持つ秘密情報にアクセスできることも ◦ その関数はサーバで実行されていることを常に意識し続ける必要あり • どこでリクエストが発生するのか追いづらい ◦ 明示的なfetchがなくなるため 個人的なPros/Cons
クライアントと Server Actionsはちゃんと分離して 秘密情報にアクセスされないように 最大限の配慮を
ナイトメアサーバアクション ファイルの引数で パストラバーサル 環境変数を返している
ちゃんとFetchが実行されることを 意識しよう
「クライアントで実行される感」が強くなってしまうが故に、 改めてサーバに送るFetchなんだぞ!ってことを意識しよう ブラウザで処理するな らまだしも、 巨大なデータが送られ るので気をつけよう
(備忘録)巨大なリクエストを防ぐには? 一応デフォルトでは 1MByteのデータまでし か送れない next.config.ts で調整可能
サーバ側でも バリデーションをちゃんとしよう
クライアントとサーバが近くて、ついついクライアントでのみのバリデーションになりがち あくまでServer Actionsの実態はサーバでcurlでも叩けちゃうのだ Next.jsが隠蔽するけど どんなリクエストも 送れるのでちゃんと バリデーションしよう
ちゃんとHSTSなど ヘッダーの設定をしよう
セキュリティーを向上させるヘッダをちゃんとつけよう 結局は内部はAPIなので、 ちゃんとヘッダー等の 設定をしてあげよう
ご清聴ありがとうございました!