17

Javascript で、暗号的に安全な疑似乱数を生成する必要があります。window.crypto.getRandomValues私は、まさに私が望むことを行う APIについて知っています。ただし、比較的最近 (2011 年くらい) に導入されたことも知っています。

が存在すると安全に想定できますかwindow.crypto.getRandomValues、またはそれを使用すると、一部のブラウザーで互換性の問題が発生しますか? サポートされていない主要な (広く使用されている) ブラウザーwindow.crypto.getRandomValues(モバイルまたはデスクトップ ブラウザーを含む) はありますか? もしそうなら、どのブラウザーについて心配する必要がありますか? 十分なサポートがあり、フォールバック メソッドについて心配する必要がなくなったことを知って喜んでいます。

4

4 に答える 4

23

window.crypto.getRandomValues が存在すると安全に想定できますか

いつものように、それはターゲット市場に依存し、時間の経過とともに変化します. caniuse.comは、どのブラウザーがサポートしているかをリストし、ブラウザーの市場シェアを計算します。

要約は次のとおりです。

  • IE 11: プレフィックス付き
  • IE Mobile 11: プレフィックス付き

  • Firefox: 21+

  • Firefox モバイル: 21+

  • サファリ: 6.1 から

  • サファリ モバイル: 7.1

  • クローム: 11+

  • モバイル用 Chrome: 23 以上
  • Android ブラウザ: 4.4

  • オペラ: 15歳以上

  • Opera モバイル: 36+
  • Opera Mini: いいえ
于 2013-04-16T08:47:34.433 に答える
7

より完全で最新のビューについては、次を確認することをお勧めしますcaniuse.com

http://caniuse.com/#feat=getrandomvalues

2015 年 12 月の時点で、Opera Mini を除くすべての最新ブラウザーがサポートしています。

ここに画像の説明を入力

于 2014-09-11T12:10:34.200 に答える
3

Opera は window.crypto.getRandomValues をサポートしていない唯一のものですが、math.random()かなり安全です。

これを解決するために私がしたことは、window.crypto が利用可能かどうかを確認することでした。そうでない場合は Opera ブラウザーであるかどうかを確認し、そうでない場合は、ブラウザーが安全なパスワードを生成できないというエラーをスローするだけでした。

if(window.crypto && window.crypto.getRandomValues)
{
    (use window.crypto.getRandomValues)
}
else if(isOpera)
{
    (use Math.random)
}
else throw new Error("Your browser can not generate a secure Password, please change it to one that can (Google Chrome, IE, Firefox, Safari, Opera) or get the newest update.");
于 2016-03-09T09:17:31.383 に答える