3

相互にリンクされた一連の Web ページがあり、ユーザーにログインとパスワードの入力を求めることで、これらのページへのアクセスを制限したいと考えています。しかし、私のホスティング アカウントは現在、サーバー サイド スクリプトの機能を提供していません。クライアント サイド スクリプトのみを使用してこの目的を達成する方法はありますか?

次のプログラムがどのように機能するのか疑問に思っていました-

http://www.myzips.com/software/HTML-Password.phtml

明確化: ご意見ありがとうございます。ただし、Web サーバーを構成している場合、ユーザーがユーザー名とパスワードを入力する可能性はありますか?

4

10 に答える 10

10

安全なクライアント側スクリプトを作成する方法はありません。ユーザーがアクセスできる場合、安全ではありません。

ホストが apache を実行している場合は、.htaccess を使用してフォルダーを保護できます。IIS では、ディレクトリ セキュリティを介して同じことができます。

于 2009-01-13T13:12:52.810 に答える
7

以下は、私が自分で実装した暗号化を使用した、この問題に対する有効な解決策です。

ここにいる何人かのユーザーは、クライアント側のパスワード保護に暗号化ベースのアプローチを使用することを提案しています. この機能も必要だったので、自分で実装しました。パスワードは PBKDF2 を使用してハッシュされ、AES256 でページを暗号化するために使用されます。

ツールは次の場所にホストされています。

https://www.maxlaumeister.com/pagecrypt/

ソースコードはこちらから入手できます:

https://github.com/MaxLaumeister/pagecrypt


プロジェクトページからのプロジェクトの説明:

PageCrypt - パスワード保護 HTML

このツールを使用すると、HTML ファイルをパスワードで安全に保護できます。他のパスワード保護ツールとは異なり、このツールには次の特徴があります。

  1. サーバー側のコンポーネントはありません (このツールとそのパスワードで保護されたページはすべて JavaScript で実行されます)。

  2. 強力な暗号化を使用するため、パスワード保護をバイパスできません。

HTML ファイルとパスワードを選択するだけで、ページはパスワードで保護されます。

于 2015-06-23T21:15:12.850 に答える
5

次のようなファイル.htaccessを作成できます。

AuthUserFile path/to/password.txt
AuthGroupFile /dev/null
AuthName "Acces Restreint"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

次に、.htpasswdファイルを作成する必要があります。

于 2009-01-13T13:17:16.793 に答える
4

これを実装することは可能ですが、別のホスティング プロバイダーに切り替える方が簡単な場合があります。それが可能な方法は次のとおりです。

まず、対称暗号化アルゴリズムとランダム キー (マスター キー) を使用して本文全体を暗号化します。この暗号文を javascript ブロックにテキストとして保存します。

すべてのユーザーについて、マスター キーの暗号化されたコピー (各ユーザー キーで暗号化) にユーザー名をマッピングする JavaScript ハッシュを生成します。

最後に、ユーザー名とパスワードを要求する Web ページを作成します。入力したら、ユーザー名を使用して、暗号化されたマスター キーを見つけます。ユーザーが入力したパスワードでそれを復号化し、結果のマスター キーを使用して元のボディのロックを解除します。JavaScript を使用して、既存の html 本文を復号化されたものに置き換えます。

于 2009-01-13T13:59:13.310 に答える
0

クライアント側のスクリプトについてはわかりませんが、Webサーバーを使用してサイトへのアクセスを制限できます。
IISでは、[ディレクトリセキュリティ]タブの設定を使用できます。IISWebサイト認証を構成します。

于 2009-01-13T13:15:37.313 に答える
0

全員のパスワードが1つしかない場合は、公開鍵タイプのアプローチを試すことができます。RSA復号化を実行するための簡単なスクリプトを提供できます(ある種のプログラミングソフトウェアにアクセスできる場所で元の暗号化を行う必要があります)。次に、コンテンツを暗号化された文字列として提供できます。パスワードボックスを表示し、ユーザーがパスワードを入力すると、パスワードに従って文字列が復号化されます。パスワードが正しければ、文字列は正しく復号化され、ページが表示されます。そうしないと、ページはゴミの束のように見えます。ただし、このクライアント側の方法はブルートフォースに対して非常に脆弱であるため、注意が必要です。

于 2009-01-13T13:23:02.507 に答える
0

もちろん、セキュリティが大したことではないのなら。基本的には、「パスワードがわからない場合は入室しないでください」と書かれたドアを設置します。サーバーサイドテクノロジーを使用しないものはすべて、パスワードを保存するための保護されたディレクトリ内のファイルとともにJavaScriptを使用している可能性があります。ただし、これはパスワード保護ではありません。JavaScriptを無効にすると、ページが読み込まれます。間違いなく、これはコンテンツを非表示にすることで対抗されます...しかし、コンテンツは引き続きソースから表示できます。他にもいくつかの方法がありますが、パスワードで保護する価値のあるコンテンツがある場合、これは適切な方法ではありません。

于 2009-01-13T13:27:21.220 に答える
0

はい、可能ですが、あまりきれいではありません。

  • インデックス ページには、制限されたコンテンツが移動する空の div があります。
  • ページの読み込み時またはリンクのクリック時に、プロンプト (window.prompt) がパスワードを要求します。
  • パスワードはハッシュされ、スクリプトに保存されている正しいパスワードのハッシュ (またはハッシュの配列) と比較されます。
  • 一致する場合は、AJAX を介してコンテンツを div にロードします
  • パスワードを Cookie に保存して、毎回プロンプトが表示されないようにすることもできます (あまり安全ではありませんが、これは非常に安全なシステムではありません)。
  • ロードするページのファイル名がスクリプトに表示されるため、まだそれほど安全ではありませんが、非常にカジュアルなサーファーを締め出す可能性があります.
  • URL を難読化することができるため、表示するには JavaScript の知識が必要になります。例: rot13

JavaScript ハッシュ スクリプトが必要です

于 2009-01-13T13:35:39.470 に答える
0

または、暗号化されたhtmlファイル名をパスワードとして使用し、ajaxを使用して、そのページが存在する場合はそのページを参照することもできます:-)

他の提案と同じくらい安全 (または安全でない) ですが、おそらく実装が簡単です。

于 2009-01-13T13:42:41.423 に答える
0

これには公開鍵は必要ありません。実際、公開鍵の復号化は、計算コストが非常に高いため、実際には他の対称鍵と証明書の暗号化に限定されています。共有シークレットが必要なだけです。

パスフレーズから派生したキー (ハッシュによる) を使用して、AES (たとえば) を使用して Web ページを暗号化します。次に、パスフレーズをユーザーに安全に伝え、JavaScript を記述して暗号化されたコンテンツをダウンロードし、パスフレーズの入力を求め、データを復号化して DOM に組み込む必要があります。

それはすべてかなり面倒で非常に脆弱です-すべてのユーザーに1つのパスワードしかありません。パスワードが侵害されるとすぐに、サーバー上のものを置き換え、Googleがキャッシュしていないことを期待する必要があります...本物のISPに移動することをお勧めします

あなたが参照している HTML パスワード プログラムに関しては、それがスネーク オイルまたは壊れたものではないことを知る方法はありません...「強力なアルゴリズムによる最高のセキュリティ」というフレーズは、まったく励みになりません。

于 2009-01-13T13:45:21.060 に答える