人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Ajaxを用いクライアントサイドとサーバーサイドを完全に切り離した開発を行おうと考えています。閲覧にログインが必要なコンテンツがあるウェブサービスで、会員専用ページもそうでないページも全てクライアントサイドは静的ファイル(HTML・JSなど)で、Ajaxによりサーバーサイドとのデータ送受信をJSON形式で行い静的HTML内のコンテンツを動的に描画という設計を考えています。

そうすれば、各ページで送受信するJSONデータのフォーマットさえきっちり決めておけば完全にクライアントサイドとサーバーサイドの開発を分けて行え効率的にウェブサービスを開発できると思うのですが、如何でしょうか。
この様な形式をとった事例を知らないので、根本的にセキュリティ的な脆弱性を抱えているのかもしれないと心配になり質問を投稿させて頂きました。

このような開発形式の可否、または可能な場合でも、考え得る脆弱性や、見落としやすいと思われるセキュリティ対策ポイントなど、アドバイス頂ければと思います。
会員専用ページのコンテンツデータは全てAjaxにより取得する予定なので静的html自体は非会員に閲覧されても問題無い内容とします。

●質問者: supermomonga
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Ajax HTML js JSON アドバイス
○ 状態 :終了
└ 回答数 : 21/21件

▽最新の回答へ

[1]通信経路の暗号化 horonict

会員ログイン/パスワードが漏洩してはいけませんから、まず、SSLなどで通信経路を暗号化します。


[2]XSRF対策 horonict

クライアント=サーバ通信において、悪意のある通信に割り込まれないように対策を施します。


[3]>2 トークン認証のみで良いでしょうか supermomonga

XSRF,CSRF対策はワンタイムトークン方式もしくはセッションID毎の固定トークン方式を採用しようと考えています。十分でしょうか?

リファラチェックは工数に対しての信頼性向上率があまり高くないと思い実装を見送る予定です。


[4]>1 SSLを採用する予定です supermomonga

通信の暗号化は、必要ですよね。

SSLを用い暗号化するつもりです。


[5](はてなにより削除しました) ara-523

(はてなにより削除しました)


[6]>5 (はてなにより削除しました) ara-523

(はてなにより削除しました)


[7]>6 (はてなにより削除しました) ara-523

(はてなにより削除しました)


[8]>7 (はてなにより削除しました) ara-523

(はてなにより削除しました)


[9]>8 (はてなにより削除しました) ara-523

(はてなにより削除しました)


[10]>9 (はてなにより削除しました) ara-523

(はてなにより削除しました)


[11](はてなにより削除しました) kimura1229

(はてなにより削除しました)


[12]>9 (はてなにより削除しました) kimura1229

(はてなにより削除しました)


[13]人的脆弱性が発生しやすいのでは aa777aa

2カ所で開発が行われると、開発スタッフを一括管理ができない。2カ所の内部管理が違うと非常勤増員や人事異動に管理のスキができやすい。資料を両者間で持ち出したり、郵送時にミスがでやすい。


[14]んー mtotugu

なんかポイントポイントうるせーーw


[15]ふぅ arisu0416

ふぅ


[16]>3 十分ということはないのですが horonict

セキュリティ・コンサル的な言い方をすると、「十分」という方式は絶対にないんですけどね。

コストとの兼ね合いで考えれば、リファラチェックよりワンタイムトークンを導入するのが現実的でしょうね。


[17]>10 (はてなにより削除しました) minnagasukidakara

(はてなにより削除しました)


[18]>16 固定トークンとワンタイムトークンですと… supermomonga

リファラ情報は自己申告なのでリファラチェックは根本的に何か間違っている気はしますよね。デメリットも少なくないですし。

セッション毎の固定トークンとワンタイムトークンでしたら、どちらの導入を行っていますか?

単にどちらがより強固であるかと言えはもちろんワンタイムトークンの方が上なのでしょうが、

予算や工数の問題を含め、実際のディレクションではどちらを採用する場合が多いのかお聞かせ頂けませんでしょうか。


[19]>13 2ヶ所で開発? supermomonga

2ヶ所で開発とはどういうことでしょうか。クライアントサイドとサーバーサイドを個別の開発チームで分けるということですか?

もちろんそれも可能ですが、目的は飽くまでシステムのモジュール化に近い構築方法の採用なので、恐らく大規模システムでもない限り1チームでの開発になると思います。

→クライアントサイドとサーバーサイドのシステム間の依存性を無くして開発を進めたい

それとも、HTMLテンプレートエンジンなどを採用して構築した方が開発・管理の分離は楽だったりするのでしょうか。

恥ずかしながらテンプレートエンジンやフレームワークの使用経験がありませんので、その辺りにお詳しいのであれば是非ご教授頂ければと思います。


[20]ソース baron2

javascriptだとソースコードが丸見えですよ


[21]>20 問題ありません。 supermomonga

ありがとうございます。

Ajax(Javascript)を使う以上それは前提条件なので、当然把握しています。

それによって起こりうる脆弱性やその対策は何でしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ