teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

9

2018/03/27 10:12

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -28,4 +28,9 @@
28
28
 
29
29
  > 回答でいただいたコードスプリッティングなどで対応はできそうですが、こんな些細なものごとにいちいち分割しているとは思えません。
30
30
 
31
- そうです。そんな些細なことにコストをかける必要があるかを検討することも大事です。なので、今回の追記であったようなケースならば特に気にしないで良いかと思います。
31
+ そうです。そんな些細なことにコストをかける必要があるかを検討することも大事です。なので、今回の追記であったようなケースならば特に気にしないで良いかと思います。
32
+
33
+ > サーバーサイドレンダリングであればサーバー側でユーザーの性別を見て生成するHTMLを変更できます。
34
+
35
+ サーバーサイドでユーザーの性別を把握出来るということは、ユーザー登録されていることが前提ですかね。
36
+ でもその場合、ユーザー登録時に本当の性別をユーザーが登録してくれているかどうかも不明ですよね。

8

2018/03/27 10:12

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -24,4 +24,8 @@
24
24
 
25
25
  クライアント側では諦める、そして、サーバー側で対応。
26
26
 
27
- SPAにかぎらず、例えば、通常のフォームであっても、フォームのUIからは選択出来ない選択肢を適当にユーザーが設定してサーバー側に送信することも可能なので、不正値かどうかはサーバー側で対応すべきものだと思います。クライアントサイドから送られてきたデータをそのままサーバーサイドで信用してはダメです。
27
+ SPAにかぎらず、例えば、通常のフォームであっても、フォームのUIからは選択出来ない選択肢を適当にユーザーが設定してサーバー側に送信することも可能なので、不正値かどうかはサーバー側で対応すべきものだと思います。クライアントサイドから送られてきたデータをそのままサーバーサイドで信用してはダメです。
28
+
29
+ > 回答でいただいたコードスプリッティングなどで対応はできそうですが、こんな些細なものごとにいちいち分割しているとは思えません。
30
+
31
+ そうです。そんな些細なことにコストをかける必要があるかを検討することも大事です。なので、今回の追記であったようなケースならば特に気にしないで良いかと思います。

7

2018/03/27 10:08

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -24,4 +24,4 @@
24
24
 
25
25
  クライアント側では諦める、そして、サーバー側で対応。
26
26
 
27
- SPAにかぎらず、例えば、通常のフォームであっても、フォームのUIからは選択出来ない選択肢を適当にユーザーが設定してサーバー側に送信することも可能なので、不正値かどうかはサーバー側で対応すべきものだと思います。
27
+ SPAにかぎらず、例えば、通常のフォームであっても、フォームのUIからは選択出来ない選択肢を適当にユーザーが設定してサーバー側に送信することも可能なので、不正値かどうかはサーバー側で対応すべきものだと思います。クライアントサイドから送られてきたデータをそのままサーバーサイドで信用してはダメです。

6

2018/03/27 10:06

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  > ここでユーザーがコンソールから性別データをいじった場合、男性なのに化粧品のアンケートを表示させる、女性なのに化粧品のアンケートを表示させない のようなことが可能になってしまう気がします。
20
20
 
21
- そして、セキュリティーともはや関係ない気がします。
21
+ そして、セキュリティーともはや関係ない気がします。
22
22
 
23
23
  > ユーザーからの挙動変更が可能なリスクがある中でどのような策がなされているのか、あるいはなすべきなのか 教えていただきたいです。
24
24
 

5

2018/03/27 10:04

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -16,6 +16,10 @@
16
16
 
17
17
  おっしゃる通り、追記の内容からすると、もはや、spaがどうこうという話ではないと思います。
18
18
 
19
+ > ここでユーザーがコンソールから性別データをいじった場合、男性なのに化粧品のアンケートを表示させる、女性なのに化粧品のアンケートを表示させない のようなことが可能になってしまう気がします。
20
+
21
+ そして、セキュリティーとももはや関係がない気がします。
22
+
19
23
  > ユーザーからの挙動変更が可能なリスクがある中でどのような策がなされているのか、あるいはなすべきなのか 教えていただきたいです。
20
24
 
21
25
  クライアント側では諦める、そして、サーバー側で対応。

4

2018/03/27 10:04

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -8,4 +8,16 @@
8
8
 
9
9
  小規模のアプリケーションの場合は1つのbundleファイルにコードをまとめてクライアントに返すかもしれませんが、規模が大きくなってくると、例えば、ログイン画面を表示するだけなのに、他の画面に関わるコードをまとめて送っていては、初期読み込みも遅くなってよろしくないので、Code Splittingを行なったりします。
10
10
 
11
- ただ、Code Splittingはセキュリティーというよりは、パフォーマンス向上の文脈で使われることが圧倒的に多いかと思います。
11
+ ただ、Code Splittingはセキュリティーというよりは、パフォーマンス向上の文脈で使われることが圧倒的に多いかと思います。
12
+
13
+ > もちろんこれはSPAに限らずJavascript自体のリスクではあると思いますが、
14
+ サーバーサイドレンダリングの場合、JSは「見た目の操作」にのみ使われてることが多いと思います。
15
+ SPAではややロジックも担当している印象を受けたためこのような質問をしました。
16
+
17
+ おっしゃる通り、追記の内容からすると、もはや、spaがどうこうという話ではないと思います。
18
+
19
+ > ユーザーからの挙動変更が可能なリスクがある中でどのような策がなされているのか、あるいはなすべきなのか 教えていただきたいです。
20
+
21
+ クライアント側では諦める、そして、サーバー側で対応。
22
+
23
+ SPAにかぎらず、例えば、通常のフォームであっても、フォームのUIからは選択出来ない選択肢を適当にユーザーが設定してサーバー側に送信することも可能なので、不正値かどうかはサーバー側で対応すべきものだと思います。

3

;

2018/03/27 10:02

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  (B)Code Splittingを行って、bundleファイルの分割を行い、必要なタイミングで必要なbundleファイルを動的にクライアントに返す([Code Splitting - Dynamic imports / Webpack](https://webpack.js.org/guides/code-splitting/#dynamic-imports)とか、[Code Splitting / React](https://reactjs.org/docs/code-splitting.html))
6
6
 
7
+ と、なりますかね。
8
+
7
9
  小規模のアプリケーションの場合は1つのbundleファイルにコードをまとめてクライアントに返すかもしれませんが、規模が大きくなってくると、例えば、ログイン画面を表示するだけなのに、他の画面に関わるコードをまとめて送っていては、初期読み込みも遅くなってよろしくないので、Code Splittingを行なったりします。
8
10
 
9
11
  ただ、Code Splittingはセキュリティーというよりは、パフォーマンス向上の文脈で使われることが圧倒的に多いかと思います。

2

https://reactjs.org/docs/code-splitting.html

2018/03/27 09:42

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  (A)そもそも、最初から管理用画面、一般ユーザー用画面を分けて、jsファイルもそれらの画面用のものをクライアントに返す
4
4
 
5
- (B)Code Splittingを行って、bundleファイルの分割を行い、必要なタイミングで必要なbundleファイルを動的にクライアントに返す([Code Splitting - Dynamic imports](https://webpack.js.org/guides/code-splitting/#dynamic-imports))
5
+ (B)Code Splittingを行って、bundleファイルの分割を行い、必要なタイミングで必要なbundleファイルを動的にクライアントに返す([Code Splitting - Dynamic imports / Webpack](https://webpack.js.org/guides/code-splitting/#dynamic-imports)とか、[Code Splitting / React](https://reactjs.org/docs/code-splitting.html))
6
6
 
7
7
  小規模のアプリケーションの場合は1つのbundleファイルにコードをまとめてクライアントに返すかもしれませんが、規模が大きくなってくると、例えば、ログイン画面を表示するだけなのに、他の画面に関わるコードをまとめて送っていては、初期読み込みも遅くなってよろしくないので、Code Splittingを行なったりします。
8
8
 

1

https://webpack.js.org/guides/code-splitting/#dynamic-imports

2018/03/27 09:38

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  (A)そもそも、最初から管理用画面、一般ユーザー用画面を分けて、jsファイルもそれらの画面用のものをクライアントに返す
4
4
 
5
- (B)Code Splittingを行って、bundleファイルの分割を行い、必要なタイミングで必要なbundleファイルを動的にクライアントに返す
5
+ (B)Code Splittingを行って、bundleファイルの分割を行い、必要なタイミングで必要なbundleファイルを動的にクライアントに返す([Code Splitting - Dynamic imports](https://webpack.js.org/guides/code-splitting/#dynamic-imports))
6
6
 
7
7
  小規模のアプリケーションの場合は1つのbundleファイルにコードをまとめてクライアントに返すかもしれませんが、規模が大きくなってくると、例えば、ログイン画面を表示するだけなのに、他の画面に関わるコードをまとめて送っていては、初期読み込みも遅くなってよろしくないので、Code Splittingを行なったりします。
8
8