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

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

新規登録して質問してみよう
ただいま回答率
85.48%
パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

5回答

19089閲覧

jsだけでログイン機能を実装させたい。(できるだけセキュアに)

obon_t

総合スコア52

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

5クリップ

投稿2017/05/25 07:36

編集2017/05/25 10:01

###前提・実現したいこと
HTML CSS javaScriptのみでユーザーの認証ができ静的なページを保護しています。(サーバーレス前提)
現在はAWSのUser Pools, cognitoでユーザー認証を行っています。

↓以下のサイトを参考
http://qiita.com/Yuki_BB3/items/ee8330830951acd907de
http://dev.classmethod.jp/cloud/aws/login-form-by-using-aws-sdk-for-javascript/

.htaccessに何かを書き加えることでjavascriptをoffにした場合でも、
うまく弾いたりする事はできるんでしょうか?(当方、.htaccessの知識が乏しいもので....)

何かいい対策案やアイデアなどあれば教えていただきたいです。

###発生している問題・エラーメッセージ
・ブラウザの設定でjavascriptをオフにすると、mypage.htmlが見れてしまう。
・セッションチェックはしているとは言えmypage.htmlの中身が基本丸見え。

###試したこと
悔し紛れに<noscript>で飛ばしてはみてます.....。
が、セキュリ的に弱いかなと...

html

1<noscript><meta http-equiv="refresh" content="0; URL=index.html"></noscript>

###補足情報(ディレクトリ)

ログインしたらマイページ画面に飛びます。マイページ画面のローディング中にログインしているかどうかセッションチェック。
ログインしていなければログイン画面に戻す。という感じです。セッションチェックは mypage.js でやってます。

www
├── js
│ ├── amazon-cognito-identity.min.js
│ ├── aws-cognito-sdk.min.js
│ ├── jsbn.js
│ ├── jsbn2.js
│ ├── mypage.js
│ └── sjcl.js
├── css
│ └── style.css
├── index.html
├── mypage.html
├── login.html
└── signup.html

###追記
サーバーレスとは書きましたが
実はcgiファイルは使えます。(サーバーにphpなどのモジュールは入ってません)
cgiファイルを使ってcognitoとうまく組み合わせられるといいのですが....

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

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

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

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

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

guest

回答5

0

基本的には何をやっても無理です
しかし独自の暗号化復号化技術をつかって、ページの本文を
暗号化できるのであれば絶対無理ともいえません
ただしその場合も平文のパスワードでアクセスするわけですから
解析しようとする人間がいればすぐに割り出せるでしょう。
結果、やるだけ無駄だと思います

投稿2017/05/25 08:10

yambejp

総合スコア114769

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

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

obon_t

2017/05/25 09:54

いくら暗号化復号化しても突破されてしまうの考えると 別の方法を考えてみます。
think49

2017/05/25 10:47 編集

> ただしその場合も平文のパスワードでアクセスするわけですから 暗号化するなら平文比較しなくとも出来そうな気がしますね。 ハッシュ値を使うとか、デコード後のテキストにパスワード平文orハッシュ値を入れて比較するとか。
guest

0

ベストアンサー

クライアントサイド言語

JavaScriptはクライアントサイドで動く為、悪意あるユーザはいくらでもJavaScriptコードを改変できます。
質問者さんがやろうとしておられる方法なら、JavaScriptを無効化しなくともユーザ認証機能のコードをごっそり削除すれば、突破出来ます。

パスワードをURIにする

コードから読み取れない手法として、パスワードをそのままURIにする手法がありますが、これもURIが一度バレて公開されてしまえば、誰でも参照可能という問題が付きまといます。

ページ全体を暗号化する

ページ全体を暗号化し、パスワードを元に複合化する方法を採用すれば、パスワードを知らないユーザがページを閲覧できなくする事は可能です。
勿論、クライアントサイドで動くので時間をかければ突破されます。

紹介した中では最もセキュアな方法ですが、メンテナンスが圧倒的に手間がかかるので、あまりお勧めはしません。

Re: obon_t さん

投稿2017/05/25 08:43

think49

総合スコア18162

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

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

obon_t

2017/05/25 09:58

まだ.htaccessのベーシック認証の方がいいのでしょうかね? 難しい......
think49

2017/05/25 10:35 編集

コード上からはクライアントサイドを意識したセキュリティ対策はとってないようなので、「クライアントサイドがどこで動いているのか」を調べて対策した方が良いと思います。 クライアントサイドで動く以上、コンテンツはユーザのものなので、パスワードがコード上に書かれているなら、いくらでも突破しようがあります。 ですので、「コードを読んだとしてもコンテンツが分からないようにする仕組み」が必要であり、コード上にパスワードを書かない工夫が必要なのです。 コンテンツを暗号化したならば、パスワードがコード上から読み取れなければ、原理的にはセキュアになります。 が、全てのコンテンツを暗号化して公開しなければならないので、手間もかかります。 実装する上では、Basic認証の方が圧倒的に楽でしょう。
guest

0

node.jsを使ってみてはどうでしょうか?

投稿2019/08/15 09:24

zansetsuber

総合スコア33

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

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

0

セッションもcognitoで管理してjsからgetSessionとかで取得しているのでjsがoffになっていると完全な制御は無理なのではないでしょうか?
htmlのrefresh機能も0に設定してても頑張ればescキーでキャンセルすることができるので確かに苦しいですね。

投稿2017/05/25 08:09

m.ts10806

総合スコア80850

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

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

obon_t

2017/05/25 09:52

やはり、そうですよね.... サーバーレスでは色々と難しいですね
guest

0

投稿2017/05/25 08:37

c0de1gn1ter

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問