Убедитесь, что использование этого генератора псевдослучайных чисел здесь безопасно - PullRequest
1 голос
/ 27 мая 2020

Когда я объявил переменную, например:

const FileId = Math.random().toString(36).substr(2, 9);

, я получаю эту ошибку в Sonar:

Убедитесь, что использование этого генератора псевдослучайных чисел здесь безопасно.

Как мне решить эту проблему? Что не так с моим кодом?

Кто-нибудь может мне помочь?

1 Ответ

2 голосов
/ 27 мая 2020

Они хотят предупредить вас о том, что Math.random - это не настоящий генератор случайных чисел, а PRNG . Если вам это необходимо для безопасности, вам понадобится CSPRNG .

Вот SP c

Использование Генераторы псевдослучайных чисел (ГПСЧ) чувствительны к безопасности

Когда программное обеспечение генерирует предсказуемые значения в контексте, требующем непредсказуемости, злоумышленник может угадать следующее значение, которое будет сгенерировано, и использовать это угадайте, чтобы выдать себя за другого пользователя или получить доступ к конфиденциальной информации.

Поскольку функция Math.random () полагается на слабый генератор псевдослучайных чисел, эту функцию не следует использовать для критически важных с точки зрения безопасности приложений или для защиты конфиденциальных данных. В таком контексте вместо этого следует использовать криптографически стойкий генератор псевдослучайных чисел (CSPRNG).

Спросите себя, требует ли

  • кода, использующего сгенерированное значение, его непредсказуемость. Это справедливо для всех механизмов шифрования или когда секретное значение, такое как пароль, хешируется.
  • используемая функция генерирует значение, которое можно предсказать (псевдослучайно).
  • сгенерированное значение используется несколько раз.
  • злоумышленник может получить доступ к сгенерированному значению.

Вы подвергаетесь риску, если ответили утвердительно на первый и любой из следующих вопросов .

Пример кода

const crypto = window.crypto || window.msCrypto;
var array = new Uint32Array(1);
crypto.getRandomValues(array); // Compliant for security-sensitive use cases
const FileId = array[0];
console.log(FileId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...