5

私は PouchDB とクライアント側の Javascript を試しています。PouchDB サイト ( http://pouchdb.com/getting-started.html ) の例がうまく機能します。私の質問は、リモートサーバーに接続するときにユーザー名とパスワードを隠す方法はありますか? 問題のコード:

var remoteCouch = 'http://user:pass@mname.iriscouch.com/todos';

これはすべてクライアント側の JS であり、公開されています。私はそれを回避する方法を考え出すことに困惑しています。

4

2 に答える 2

2

ユーザーがユーザー名とパスワードを提供する必要がある場合は、ログイン プロンプトを提示し、安全なCouchDB セッション Cookieを使用できます。Cookie は改ざん防止機能があり、ブラウザ セッションが終了するか明示的に削除すると削除されます。

于 2013-12-31T04:33:58.833 に答える
2

サーバー間で通信している場合、SSL を使用して安全性を維持できます。クライアントとサーバーは、リクエストに関するデータ (つまり、ファイル名、基本認証クレデンシャルなど)を送信する前に、安全な接続を確立します。

クライアント側に存在するものに関しては、どれだけ安全になりたいかという問題です。すべてが JavaScript であるため、特に PouchDB の場合は、次の 2 つのいずれかで解決する必要があります。

  1. メニューを表示したり非表示にしたりする派手なスイッチがある

    このシナリオでは、すべての重要なメニューを備えたメイン画面があります。ユーザーが正しいパスワードを入力してその画面に移動するか、プログラムが「ユーザー名またはパスワードが正しくありません」と表示します。しかし、それはすべて JavaScript で書かれているので、システムについて十分な知識を持っている人なら誰でもMyApp.User.isLoggedIn = function() { return true; };.

  2. 必要なものを暗号化する

    クライアント側に機密データがある場合は、クライアントにパスワードを提供し、そのパスワードを使用して機密データを暗号化するよう依頼できます。ペイロードに応じて、パフォーマンスが過度に集中する場合とそうでない場合があります。この場合、独自のセッションを実装する必要がある可能性があるため、そのパスワードや機密データをメモリ内に保持することはありません。次に、Eve がしなければならないことは、JS コンソールに移動してconsole.log(MyApp.User.password);. パスワードがハッシュ化およびソルト化されている (またはソルト化する必要がある) 場合でも、Eve はハッシュ関数とソルトにアクセスできる可能性があります。

幸運を!あなたが思いついたことを聞きたいです。

于 2013-12-28T00:03:26.693 に答える