問題タブ [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.
php - これを生成する PHP コード
wsdl ファイルから結果を取得しようとしていますが、認証が必要であり、ユーザー名とパスワードを通常どおり渡すとエラーが発生します。
ヘッダーは次のようになります。
php - flickroauthapiはランダムな時間に署名の無効なエラーを返します
ユーザーをflickrapiに対して認証するWebアプリがあります。OAuth 1.0を利用し、認証はほとんどの場合機能します。しかし、ランダムな時間、完全にランダムな時間に、flickrは私の署名を認識しません。リクエストトークンのリクエスト中に無効な署名エラーを返します。ただし、次の試行で同じコードを使用すると、リクエストトークンが適切に返されます。
ノンスやタイムスタンプの生成方法と関係があるのではないかと思います。そうでなければ、それは次の試みでは機能しないはずですよね?
これは、ナンスとタイムスタンプの値を生成する方法です。
これに問題はありますか?ナンス値を生成するためのより良い方法はありますか?このランダムな失敗は非常に混乱を招きます。ランダムに無効なエラーが発生する他の理由は考えられません。
ファローアップ
Jan Gerlingerの提案に従って、mktime()をtime()に変更しました。それは確かに発生頻度を減らしました。しかし、それでもランダムな時間に無効な署名エラーが発生します。time()に変更した後は、ごくまれに追加する可能性があります。
したがって、timestamp(mktime)がこれらのランダムエラーの原因の1つであると想定しています。しかし、他の何かがまだそこでうまくいっていません。たぶんノンス世代?
php - CSRFトークンとNonceトークンを組み合わせることは可能ですか?
最初にいくつかのコンテキスト。ナンスにアクションをアタッチできる
のと同じ方法で、ナンストークンを使用してフォームデータに署名しています。wordpress
これにより、後でユーザーが許可を与えた投稿を編集しているかどうかを確認できます。これは、ナンスを再構築し、受け取ったナンスが作成したものと同じかどうかを確認するためです。
これまで、私はこの方法を、CSRF保護を提供する反CSRFトークンと誤解していました。
CSRFの問題を深く掘り下げてみると、このソリューションではCSRFから100%保護されていないことがわかりました。理由は次のとおりです。
- ナンスは、受信したデータを使用してサーバーで再構築できます。CSRFを再構築してはなりません。
- ナンストークンは、ウィンドウ時間のフォームでも同じになります。CSRFは、リクエストごとに一意である必要があります。
だから、ここに私の質問があります:
CSRFとデータ署名から保護するためにフォームで2つのトークンを使用しても大丈夫ですか?これらの2つのトークンを組み合わせる方法はありますか?
ajax - ajaxナンスワードプレスのセキュリティ。これを使用して、jsonデータをスクレイピングから保護できますか?
私はajaxを使用してワードプレスプラグインを構築しており、jsonデータを詮索好きな目やデータスクレーパーから保護しようとしています。
私の考え...サーバー側では、jqueryスクリプトへのフォーム送信内の非表示のhtmlフィールドにナンスを送信します。
このスクリプトは、PHPファイルからいくつかのjsonデータをGETを介して要求します。
phpファイルがGETリクエストに応答する前に、まずナンスが有効であることを確認し、有効な場合はjsonデータを返します。そうでない場合は、何も返さない/死ぬ/何かクールなことをして、そのIPアドレスを一定時間ロックアウトします。
スクレーパーがgetリクエストを使用してデータファイルに直接アクセスしたが、ナンスが正しくない場合、データは返されません。人がデータファイルをのぞき込んでも、ナンスがない場合は、何も表示されません...これは正しいですか?ナンスは一度しか使用されていないことを知っているので、古いナンスを持っていても、ワードプレスで新しいナンスが生成されない限り、データを表示することはできませんか?
これは可能ですか、それとも私はノンスの要点を完全に見逃しましたか?
java - nonce を使用したステートレス Cookie 認証のベスト プラクティス
認証にCookieを使用することについて読んでいます。Cookie はブラウザーのキャッシュから盗まれたり、HTTP メッセージで傍受されたりする可能性があるため、これは難しいようです。
そのためにノンスを使用するという考えに至りました。誰かがそれを盗むので、私はそれが好きです。実際のユーザーが WebApp に再度アクセスしようとするとすぐにアクセスできなくなります。そして、それを盗み続けるには、彼はユーザーの近くにいる必要があります.
しかし、適切なアルゴリズムを見つけることができません。Wordpress の nonce 実装は user_id を使用し、認証 Cookie ジェネレーターはちょっと複雑です (読み続けますが、もっと簡単に実装したかったのです)。
これらは私が強制的に使用している制約です:
- DB や HD に書き込む必要はありません。その複雑さに見合わないからです。
- つまり、サーバーはいかなる種類のデータも保存してはならず、すべてのデータ (ログインとノンス) を Cookie 経由でクライアントに送信する必要があり、クライアントはその Cookie データを送り返す必要があります。
- 「login|nonce」のように、Cookie にログインを追加しても問題ありません。したがって、Cookie を受け取ったときに、ログインと nonce のサブストリングを作成して確認できます。
- PHP と Java サーブレットで実装する必要があります。どちらかのコア機能を使用する場合、その機能をもう一方に実装するか、代替品を見つける必要がありますが、交換可能である必要はありません
- これは nonce であるため、HTTP 応答ごとに新しい nonce を生成します。これは 1 回だけ有効で、再度使用しようとすると無効になります
- ナンスを次のリクエストでのみ使用できればいいのですが、このナンスをどこかに保存して比較のために取得する必要があると思います。ステートレスを破る価値はないと思います。 limit で十分かもしれません (time limit は
time() / ( $nonce_life / 2 )
nonce のパラメーターの 1 つとして使用することを意味するため、その時間内にのみ使用できます
アイデアは、誰がログインしているかを知るためのステートレスで Cookie のみの方法を持つことです。
Wordpress でわかるように、ナンスが一度しか使用されていないことを知る方法は実際にはありません。ナンスが行うすべての検証は、有効期間中に使用されているかどうかです。したがって、$nonce_life が 1 日であれば、Wordpress のノンスはその日の間無制限に使用できます。それはリスクが高いと思います。ナンスを HD ファイルに保存し、ステートレスを破る方がよいかもしれませんが、ナンスは 1 回だけ使用するようにしてください。単純な rand() を使用して作成できます。
android - Android アプリ内課金の nonce をサーバーで生成する必要があるのはなぜですか?
http://developer.android.com/google/play/billing/billing_best_practices.html
ベスト プラクティスのドキュメントが示唆しているように、サーバーでアプリ内課金の署名検証タスクを実行したいと考えています。これにより、ノンスに関する次の節にたどり着きます。
また、サーバーで nonce 検証を実行している場合は、必ずサーバーで nonce を生成してください。
購入リクエストで渡した nonce は、developerPayload
追加の検証のために購入データの一部として返されることを知っています。クライアントが SecureRandom を使用して一意の nonce を生成するだけでは十分ではありませんか? - とにかく、検証のために購入データをサーバーに戻すため、クライアントが生成したナンスも保存して、リプレイ攻撃を除外します。
nonce がサーバー上で生成されていることを「確認」する必要があるのはなぜですか? アプリはアプリ内購入の前にサーバーからナンスを要求する必要があるため、プロセスが複雑に思えます。
私が考えることができる唯一の非常にまれな状況は、クライアント上の SecureRandom がサーバー上で既に使用されているノンスを生成するインスタンスを防ぐことです。orderId
それでも、それ自体が一意であるはずの と照合することで、そのような状況を簡単に特定できるのではないでしょうか。
ios - iOS クライアントのナンストークンを生成するには?
ユーザー名と共有秘密鍵、およびパスワード ダイジェストを使用して、iOS クライアント側でナンス トークンを作成する方法はありますか。アプリの 1 つに SOAP ベースのリクエストを作成する際にナンスが必要です。
これについてさらに情報や詳細が必要な場合はお知らせください。
ありがとう。