HTTP基本認証では、盗聴やman-in-the-middle攻撃が発生しやすくなります。 HTTPSを使用することをお勧めします。
ただし、これがオプションでない場合は、クライアントにCookieを送信して、そこにユーザー名とパスワードを入力してJSファイルに表示されないようにすることができます。セキュリティ上の理由からパスワードが少なくとも暗号化/ハッシュ化されている必要はありません。次に、サーバー側でonusがCookieから認証の詳細を取得します。
サーバーサイドコードの変更を制御できない場合は、資格情報の詳細をグローバルajaxSend()
メソッドに埋め込む以外の方法はほとんどありません。これは、すべてのユーザー名/パスワードの詳細を送信しますAJAXリクエスト。これを他の.jsファイルに入れて見つけにくくすることもできますが、あなたはそのような形のセキュリティにかなり制限されています。クッキーはあなたの人生をより安全にするものではありません。 (パスワードがハッシュ/暗号化されていると良いでしょう)。
セキュリティのもう少し複雑な形をすることもできます:サーバーがすべての応答でノンスを返すようにします。ノンスはサーバーの秘密鍵を使用してサーバーによって「署名」されます。それを使用して、リクエストごとにクライアント側のユーザ名/パスワードを「暗号化」します。その場合、サーバーは常に資格情報を復号化する必要があります。これは中間者の人にはあまり起こりませんが、それでも絶対確実ではありません。
HTTPSを利用すると、上記のそれぞれからあなたを救うことができます。
これが役に立ちます。
UPDATE(コメントごとなど): 安らかネスの本質は、サーバー上の状態が存在しないことです。私は、セッションがありません!したがって、クライアントがサーバーに対して行うすべての要求でユーザー資格情報を送信する必要があります。ログインページがあれば、ログインと呼ばれる「リソース」がないので、本当に安心できることは非常に難しいです。しかし、ここで何ができるかです:、
- ユーザーの訪問は、ページにログイン資格情報とクリックのログイン」を入力する
- これらの資格情報を使用してサーバーにPOSTリクエストを送信する - おそらくに/ログイン
- サーバーが返す持っています要求されたリソースが認証され、 '次の'要求で使用する有効な資格情報を持つCookieを設定します。
- 以降の要求はすべて、特定のアクション(GET、PUT、POST 、DELETE ...)。サーバーは、Cookieから認証データをチェックし、ユーザーが認証されているかどうかを判断し、必要に応じてアクセスを許可するための追加の認証を実行する必要があります。(そして安らかネス;) -
すべての要求は、サーバーがセッションを維持することなく、自分自身を識別しなければならないが、それは無国籍者の精神だ私は私の同僚との議論を持っていたし、最高のアイデアを思い付いたオーケー
出典
2011-11-10 00:57:07
PhD
そのような種類のサーバーの全体的な壊れやすさを破ることはありませんか?私はあなたがそのルートに行くつもりならば、サーバー上でセッション処理を行うだけでもいいということです。私が間違ってはいけない私は毎回信任状を渡して、毎回パスするためにクライアントに保管することは、必ずしも明るい考えではないということについて、私はまだ暗闇の中です。 – thenetimp
すべての要求に資格情報を渡すことについて何も問題はありません。 RESTでは、すべての要求を自己記述可能にする必要があります(サーバー内のセッションの必要性を取り除くため)。リソースが保護されている場合、資格情報は要求 "description"の一部であり、それとともに送信される必要があります。 ユーザーに彼の資格情報を尋ねて、それ以降のすべての要求に渡すことができます。 OPには、セッションを使用しないでください。あなたはそれでRESTの美しさを破壊しています。セッションは必要ありません。セッションを使用しないと、システムのスケーラビリティが大幅に向上します。 – miguelcobain
この実装用に書いたbackbone.jsコードの例を挙げることができますか?私はそれを動作させるのに問題があります。私の進捗状況は[この質問]で見ることができます(http://stackoverflow.com/questions/14752326/adding-http-basic-authentication-header-to-backbone-js-sync-function-prevents-mo) – MusikPolice