知らないとあぶない?Next.jsセキュリティの話

Поділитися
Вставка
  • Опубліковано 30 гру 2024

КОМЕНТАРІ • 20

  • @bbieye
    @bbieye 6 місяців тому +4

    いつも楽しく動画を拝見しています🥰
    素人なのですが教えていただけないでしょうか。いろいろと気を付けないとNextの
    セキュリティは難しいということがわかりました。どうもありがとうございます😍
    セキュリティを楽にできるように考えるとバックエンドを
    railsやLaravelでおこなって必要なデータだけフロントに出すようにしたらなど
    考えてしまったのですが、お二人はバックエンドもNextでやる
    メリットや理由というのをお伺いしたいです。

    • @moozaru
      @moozaru  6 місяців тому +5

      コメントありがとうございます!
      まず、そもそもフロントエンドとバックエンドの距離がある事自体に不満がありました。従来のRailsだけ、Laravelだけで作る形式は良かったですが、そこからReactやVueが入ってきた時に2つのアプリを作っているかのような手間を感じてしまいました。そこにフロントとバックの境界線をなくしたように感じるNext.jsは個人的にはすごく良いです。
      セキュリティに関してはNext.jsが弱いという事はなく、どのフレームワークを使っていても同じような問題は起こり得ます。
      なので、あとは開発体験として自分にとってしっくりくるものを選んでもいいかなと思います。

    • @bbieye
      @bbieye 6 місяців тому +1

      @@moozaru すぐに返信をいただいてどうもありがとうございます☺
      私はLaravlerだったのですが、今までは全部Laravelでやっていました。しかしフロントを柔軟に作りたいと思い、今バックエンドはLaravelそしてフロントはReactでやっているところです。
      はい。おっしゃる通り、2つのアプリを作っている感じがありますね。Authなど、認可のCROSで手間取ってしまったりしてこれが、Next.jsで全部すればこういう苦労もないのかなと動画を拝見しながら考えました。
      また、2つの開発サーバーを立ち上げながら、あそこを修正しないと、ああ、こっちのVSCODEじゃなかった、という感じも煩わしいなとも思いました。
      Next.jsはDBを使わないちょっとしたものしか作ったものはないのですが、今後は丸ごと全部、Next.jsでやってみようと思います。どうもありがとうございました🥰

  • @EICHANNELS
    @EICHANNELS 6 місяців тому +1

    Nextはちゃんと触ったことないのですが、こんな面倒なんですね。非常に面白い視点での会話でした。
    開発規模にもよると思いますが、そこまでのリスクを背負って利用するメリットはあるんでしょうかね。。。優秀なエンジニアさんであれば生産性は上がって良いんでしょうが。

  • @takumifujise6137
    @takumifujise6137 6 місяців тому

    これは言われないと気づかなそう。
    私は普段Rails(+フロント構成のSPA)しか書いてないので、ここで話された地雷は意識しないと踏みそうだなと思いました。

  • @あっきー-i9j
    @あっきー-i9j 5 місяців тому +3

    勘違いだったらすいません…
    propsから情報漏洩する対策がDTOというところ、「Server->Client間の転送層としてのDTO」という独自の設計前提でお話しされてる気がしました。
    主にバックエンドの世界におけるDTOはサーバー内処理において不変なデータ転送であることを示すこと使うので、最初「あー、React Taint APIでDTOを転送禁止にする話かな?」と思ったんですが、どうもそうではなさそうでかつClientへの流出をDTOなら防げるような言い回しが、本来のDTOの意味に沿ってない気がして気になってしまいました。

    • @moozaru
      @moozaru  5 місяців тому +1

      ちょっとわかりにくい話しですいません。
      話したかった意図は、ServerComponent内部で、DBから取得したデータをpropsなどで伝搬する際にDTOの考え方を適用したいということでした。Prismaで取得したオブジェクトをそのまま渡さず、DTOで明示的にフィールドを渡す。ServerからClientという意味では仰るとおりReact Taintが有効になりそうですね。

  • @mizchi0x
    @mizchi0x 3 місяці тому

    DDD的な文脈だとDTOはそれ自体がインフラ層から切り離された真のモデルなので、あえて~DTOと書く必要はない気がしてます。
    逆に言うと元のORM抽象自体がDDD的な文脈では綺麗なモデルではない、という話になってはしまうんですが…

  • @hakkaisan-s6x
    @hakkaisan-s6x 2 місяці тому

    初めまして。
    いつも勉強させてもらっています🥰
    Next.jsと連携するバックエンドAPIの慣習について質問させてください。
    Next.js+python(FastAPI)構成のシステムを見たことがあるのですが、
    同じシステムなのにサーバーサイドが2つあることに何となく違和感があります。。
    このような構成はFastAPI側では認証認可の実装を行わずにデータだけを返すAPIにしたいという設計思想なんでしょうか??
    Next.jsのサーバーサイド側では認証(認可?)の実装とFastAPIにリクエストを送るのみだったので、FastAPI側で認証認可を行わないなら綺麗な感じがするのですがどうでしょうか・・??

    • @moozaru
      @moozaru  2 місяці тому +1

      サーバサイドの定義・範疇次第かなと思いますが、Next.jsでServerComponentを使いつつ、ビジネスロジックは別システム(FastAPIやRailsなど)に分離するということ自体は、割とよく見る構成です。ただし、ビジネスロジックがどちらにも分散してしまっているとしたら、設計があまり良くないかもしれないですね。
      認証認可も同様に、原則ビジネスロジックを持つシステムが担うと思います。要はブラウザが持ってる認証に使うデータをNext.jsが受け取ってFastAPIにバイパスするような形、あるいはブラウザから直接FastAPIを叩きに行く構成になるかと。
      もしFastAPI側が認証認可のチェック機構がない場合は、アクセス元が信頼できるかどうかチェックする必要が出てきちゃいますね。

    • @hakkaisan-s6x
      @hakkaisan-s6x 2 місяці тому

      ​@@moozaru ご返信ありがとうございます!
      確かに認証認可はFastAPIなどビジネスロジックを持つシステム側で担当するのが自然そうですね(FastAPI側に認証認可の機構がない場合はエンドポイント流出したら危なそうですし・・)。自分で勉強のためのアプリケーション制作の際に参考にさせていただきます😋

  • @はなはなマロン-w4s
    @はなはなマロン-w4s 6 місяців тому +1

    初心者です!
    Server Actions 内でセッション情報確認しなければならないということですが、それは middleware にてチェックできるのでしょうか??

    • @はなはなマロン-w4s
      @はなはなマロン-w4s 6 місяців тому

      いや、厳しそうですね...
      例えば Auth.js を使っている場合は、server actions 内で getServerSession とかでチェックしないといけないですよね。

    • @moozaru
      @moozaru  6 місяців тому +1

      そうですね物理的にはできなくもないですが、Server ActionsのEndpointを特定するのが非現実的なので関数内部でチェックする必要があります。

  • @kumonopanya
    @kumonopanya 6 місяців тому +1

    どんな技術も使う人の力次第。面倒になったと思う人は技術力が未熟なわけだし、便利になったという人はうまく道具を使える人ってだけ。 さもNext.jsが悪いみたいに評価しているって人は、自分の力をまず評価してみては?

  • @user-ieffc
    @user-ieffc 6 місяців тому +3

    髭剃ったほうがよさそう、、、
    生やすならおしゃれな感じで生やしてみては

    • @moozaru
      @moozaru  6 місяців тому

      ありがとうございます。
      苦手領域なのですが、がんばらないと、、