問題タブ [nonce]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java でダイジェスト認証を実装するには?
これは非常に広範な質問であることは承知していますが、完全な実装について質問するつもりはありません (それを実行してくれるライブラリがあることは知っています)。それについていくつかの小さな質問があります。
- nonce 値は http ヘッダーに入るべきですか?
- クライアント側で http ヘッダーからノンスを読み取るにはどうすればよいですか?
- nonce をサーバーに送り返すにはどうすればよいですか? もしかして隠しフィールド?または、ブラウザは後続のリクエストごとにそれを行いますか?
- クライアントナンス (cnonce) に関しては、他のフィールドや非表示フィールドと同じ方法で送信する必要がありますか?
- サーバーから cnonce を取得するにはどうすればよいですか? ノンスと同じ?
私のプロジェクトでは、サーブレットを使用して html ページを生成しており、http ログイン フォームを処理するサーブレットがあります。
ios - iOS-NSURLConnection-サーバーに接続してNonceを取得
iOSアプリケーションを書いています。いくつかの不動産に関連するサーバーがあります。ノンスを取得するには、次のリクエストをサーバーに送信する必要があります。
私は投稿するために次のコードでASIHTTPを使用しています:
私が得ている応答は
エラーです:HTTP接続を開始できません
成功した接続を確立する方法を教えてもらえますか?
security - サーバーからチャレンジを取得した後の RESTFul 認証
認証のためにサーバーにチャレンジを提供する方法について混乱しています。これは RESTFul アーキテクチャです。私のサーバーから、私はこれを返しています:
クライアントで、ユーザー名とパスワードを含むチャレンジをサーバーに提供するにはどうすればよいですか? サーバーから取得した値を使用して実行する必要がある手順を教えてください。
php - CSRFトークンとノンスのエントロピー
私はZendFrameworkを使用して求人広告サイトを作成しています(ポートフォリオの目的で、はい、世界には「さらに別のCraigslistクローン」の余地がないことを知っています)。アカウントを必要とせずに投稿/編集/削除する機能を実装しようとしています。
これを行うには、送信後にNonceを生成し、データベースに保存する必要があるように感じます。次に、次のように、削除のGETリクエストを行うユーザーにリンクをメールで送信します。
http://www.somesite.com/post/delete/?id=123&nonce=2JDXS93JFKS8204HJTHSLDH230945HSLDF
ユーザーのみがこの一意のキーまたはナンスを持っています。送信時に、投稿のIDでデータベースをチェックし、削除する前にナンスが一致することを確認します。
私の問題は、ナンスが実際にどれほど安全かということです。Zend Frameworkを使用すると、次のZend_Form_Element_Hash
ようなハッシュが作成されます。
mt_rand()について読んだあるコメント者は、 「この関数のエントロピーは限られています。したがって、ランダムな文字列を作成する場合、文字列の長さに関係なく、約20億の異なる文字列しか生成しません。これは重大なセキュリティになる可能性があります。このような文字列をセッション識別子、パスワードなどに使用している場合に問題が発生します。」
アプリケーションのナンス/トークンの存続期間(ユーザーが投稿の削除を選択するまでに数日または数週間かかる可能性がある)のため、潜在的なハッキングには十分な時間が与えられると思います。
左側と右側のこのビジュアルマッピングピクセルに見られるものmt_rand()
からの大幅なアップグレードであることがわかります。しかし、それで十分ですか?「20億の異なる文字列」がセキュリティの問題になる理由は何ですか?rand()
rand
mt_rand
そして最終的に、ナンス/トークン/ハッシュのエントロピーをどのように増やすことができますか?
android - Android HttpClient Digest Authentication Authorization ヘッダー「nc」がハードコーディングされている
1 つの HttpClient (1 セッション) でターゲット サーバーに複数のリクエストを送信しようとします。ターゲット サーバーは、最初にすべての要求をダイジェスト認証 (MD5-sess に基づく) で認証します。結果は、最初のアクセスのみが成功したことを示しています。"nc" 値は常に "00000001" であるため、サーバーはその後のアクセスをリプレイ攻撃として処理するため、次のアクセスはサーバーによって拒否されます。
Android HttpClient は、ダイジェスト承認ヘッダーの属性「nc」を「00000001」にハードコーディングしているようです。
新しいリクエストが送信されたときにクライアントがこの値を増やす方法はありますか? ありがとう。
パブリック クラス HttpService {
}
cryptography - PIVスマートカード-一般認証-ナンスに署名
誰かがPIVスマートカード標準を手伝ってくれることを望んでいました。
以前に生成されたRSA1024ビットモジュラスデジタル署名キー0x9Cを使用してPKCS#1パッド付きナンスに署名させることにより、スマートカードを認証したいと思います。テストアプリケーションの出力は次のようになります。
そしてここに内訳があります:
また、すべての異なるキーを使用して(すでにすべてを正常に生成している)、連鎖メッセージと単一部分メッセージを使用してテストを実行しました。詳細なテストデータを参照してください。
android - Android InApp Billing-本当にナンスは何ですか?
はい、私はすべてのドキュメント@developer.android.comを読みましたが、1つの基本的な例外、つまり導入された目的を除いて、すべてを理解しています。
Google Playからのすべての注文応答は、誰もがアクセスできない秘密鍵によって署名され、ペアの公開鍵(私の場合は外部サーバー上にあるため、第三者もアクセスできない)によって検証されているため、単純に(ほとんど)方法がありません。なりすまし。
これらのナンスはすべて、購入を保護するための冗長な方法にすぎません。さらに、次の場合、ドキュメントは状況について何も述べていません。
- アイテムを購入します。
- ノンスを生成してGooglePlayに送信します。
- クラッシュすると、私の既知のナンスはすべて失われます。
- アプリを再起動して、GooglePlayからコールバックを受け取ります。
- ...そして、ナンスを認識しなかったため、この呼び出しを拒否します!
上記の状況では、ユーザーはアイテムの代金を支払い、決してそれを手に入れません。それは恥ずべきことです。もちろん、ナンスをいくつかのファイルに保存して、アプリが戻ってきたときにそれを再読み込みすることはできますが、それはノンスのすべての原則に違反しています。
IMHOの誰かが、「検証プロセスが単純すぎるので、ランダムに何かを追加しましょう。もっとクールになります!」と言ったばかりです。だから誰かがやった。
または、他のユースケースに心を開いていただけませんか。それ以外の場合は、コードからナンス部分全体を削除しています。
ruby - ruby sinatra openid アプリが「Nonce が既に使用されているか、範囲外です」と応答する
Ubuntu イメージの sinatra で次の ruby openId の例を実行しています。
Google URL(https://www.google.com/accounts/o8/id)を入力すると、Googleにリダイレクトされ、資格情報を入力しますが、アクセスが許可される代わりに次のようになります:
ノンスが既に使用されているか、範囲外です: "2012-05-09T13:50:xxxxxxxxxxxxxxx"
(ところで、「shotgun」ではなく「ruby」を使用してrubyプログラムを実行しています)。出力の意味と救済策について、誰かが私にいくつかの洞察を提供できますか? ありがとう!
ajax - check_ajax_referer()は実際にどのように機能しますか?
スマートワードプレスの人々は、プラグイン開発者は、ページからワードプレスブログ(admin-ajax.php)に返送される各AJAXリクエストでナンスを使用する必要があると言います。
これは、(1)サーバー側でナンスを生成することによって行われます。
...(2)AJAXリクエストを送信するJavascriptコードでそのナンスを利用できるようにします。たとえば、次のように行うことができます。
...そして(3)javascriptajaxロジックはそのグローバル変数を参照します。
...そして最後に(4)サーバー側ロジックで受信したナンスをチェックします。
しかし、チェックは実際にどのように機能しますか?
wordpress - ワードプレスのナンスの有効期限を早めることはできますか?(wp_verify_nonce経由)
Wordpressにはnonceメカニズムがあり、プラグインはnonceをクライアント側のコードに出力し、クライアントがサーバーに通信するときにnonceを検証できます。
ソースコードwp_verify_nonce()
(wp-includes / plugin.php内)を調べたところ、ナンスが24時間以内の場合にtrueが返されることがわかりました。
確認できるナンスを作成することは可能ですか...たとえば....1分前ですか?
どのように?
add_filter()
とを経由する方法があると思いますnonce_life
。しかし、私はどこにでもあるナンスに短い寿命を持たせたくありません。プラグインで使用されているナンスだけの寿命を短くしたい。