다음과 같은 변수를 선언했을 때 :
const FileId = Math.random().toString(36).substr(2, 9);
Sonar에서이 오류가 발생합니다.
이 의사 난수 생성기를 사용하는 것이 여기에서 안전한지 확인하십시오.
이 문제를 어떻게 해결해야합니까? 내 코드에 어떤 문제가 있습니까?
누구든지 나를 도울 수 있습니까?
그들은 Math.random이 진정한 랜덤 생성기가 아니라 PRNG 라는 사실을 경고하고 싶습니다 . 안전을 위해 필요한 경우 CSPRNG 가 필요합니다 .
PRNG (의사 난수 생성기) 사용은 보안에 민감합니다.
소프트웨어가 예측 불가능 성이 필요한 컨텍스트에서 예측 가능한 값을 생성하면 공격자가 생성 될 다음 값을 추측하고이 추측을 사용하여 다른 사용자를 가장하거나 민감한 정보에 액세스 할 수 있습니다.
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);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다