no image
[JS] Math.random() 보안 취약점과 해결방안
들어가며Math.random()에서 보안취약점이 걸려 코드를 수정해야 하는 일이 생겼다. 찾아보니 Math.random()은 완전 랜덤 값을 생성하지 않는다고 한다. Math.random()javaScript에서 0 이상 1 미만 (0 의 난수를 반환하는 함수이다.같은 값을 반복하지 않지만, 내부적으로 의사 난수 생성기(PRNG, Pseudorandom Number Generator)를 사용하기 때문에 완전 랜덤 값은 아니다. 보안 취약점1. 예측 가능한 난수 생성 (Deterministic)Math.random()은 랜덤한 수를 생성하는 것처럼 보이지만 사실 의사 난수 생성기(PRNG)를 기반으로 동작하는, 특정 알고리즘을 통해 계산된 값이다. 브라우저마다 Math.random()의 구현 방식은..
2025.03.15
no image
[JS] Symbol 타입 필요성
들어가며자바스크립트를 공부하던 중, ES6부터 Symbol이라는 데이터타입이 추가되었다는 사실을 알았다. Symbol이 대체 뭘까?   SymbolSymbol은 ES6에서 도입된 고유하고 변경할 수 없는 값을 생성하는 원시(primitive) 데이터 타입이다.다른 원시 타입(숫자, 문자열, 불리언 등)과 다르게, 심볼은 유일한 식별자로 사용되며 객체의 프로퍼티 키로 주로 활용된다.심벌 이외의 원시 값은 리터럴을 통해 생성하지만 심벌은 Symbol 함수를 호출해 생성한다.이때 생성된 심벌값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않는 유일무이한 값이다.   1. 객체 프로퍼티의 고유한 키 생성문자열 키는 충돌할 위험이 있지만 Symbol을 사용하면 절대 중복되지 않는 고유한 프로퍼티 키를 만들..
2025.03.14
no image
[JS] forEach(console.log)
들어가며자바스크립트를 공부하던 중, 예제 1번의 실행결과가 이해되지 않아 forEach()에 대해 찾아보았고, parseInt()와 parseFloat()이 내부적으로 어떻게 실행되는지도 알게 되었다.   forEach()forEach() 함수는 반복문을 통해 배열의 요소를 접근하지 않고도 콜백 함수로 간편하게 배열 요소들을 처리할 수 있는 함수이다. 각 요소의 값뿐만 아니라 인덱스와 배열 자체도 콜백 함수에서 사용할 수 있다. 예제 1const arr = [1, 2, 3];arr.forEach(console.log);forEach는 콜백 함수에 세 개의 인자를 전달한다.1. 배열 요소 (value)2. 현재 인덱스 (index)3. 배열 자체 (array) 따라서 위 코드의 실행 결과는 1 2 3이 한..
2025.03.02