質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

507閲覧

SPAで個人情報を扱うフォームを開発する際の値の引き回しについて

mizumiinclude

総合スコア41

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/12/13 05:35

React.js (Next.js) で個人情報を扱うフォームを開発しています。

以前、ライトな情報のフォームを開発した際には、React.createContext などでコンポーネント・ページ間で値を管理するようにして実装していました。

しかし、個人情報などを扱うフォームを開発する上で状態管理のライブラリに保存してページ間で引き回すというのはセキュリティ的にどうなのかという質問をされ、あまり自身がそのへんの知識がなかったため、最終的にバックエンド(PHP)でセッションに値を保存、CSRFなどはトークンを使うなどで解決する、という手法になりました。

結果的に、SPAの仕組みをうまく使えずにかなり効率の悪い開発になってしまったので、以前やっていた方法が安全かどうか、安全でなければよりベターな方法を教えていただきたいです。

以前やっていた方法

入力画面送信時に状態管理に入力された内容を保存

確認画面では状態管理の値を参照、表示

入力画面に戻った時には状態管理の値をinputに入力しておく

送信時は状態管理から値を取り出し、APIでPOSTする(ヘッダーにAPI keyを含める形で送信、API keyは環境変数にしておき、外部から読まれないようにする)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/12/24 00:05

SPA の場合、見た目的にはページ遷移しているように見えますが、ブラウザ内部の挙動としては最初のページのまま表示を切り替えているだけに過ぎません。ので、SPA であること自体はセキュリティの問題にはならないと思います。むしろ、ページ切り替えの際にサーバーとの間で情報をやり取りする方が危険性は増すのでは。とはいえ、適切に実装すれば大丈夫なはずですし、SPA でもまずいやり方で実装すれば問題は起こりうるので、SPA のセキュリティを適切に評価できないのであれば採用を諦めるという判断もありでしょうね…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問