일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SBT표준
- 프록시배포구조
- 러스트 기초 학습
- chainlink 설명
- 스마트컨트렉트테스트
- ethers websocket
- 스마트컨트렉트 함수이름 중복 호출
- 머신러닝기초
- vue기초
- 컨트렉트 배포 자동화
- 깃허브명령어
- multicall
- Vue.js
- ambiguous function description
- 컨트렉트 동일한 함수이름 호출
- 체인의정석
- 러스트 기초
- Vue
- 스마트컨트렉트프록시
- 스마트 컨트렉트 함수이름 중복
- ethers typescript
- nestjs 튜토리얼
- nest.js설명
- ethers
- ethers v6
- git rebase
- 스마트컨트렉트 예약어 함수이름 중복
- rust 기초
- 러스트기초
- ethers type
- Today
- Total
체인의정석
eslint plugin security 모듈 본문
https://www.npmjs.com/package/eslint-plugin-security
eslint plugin security 사용 , 보안성을 향상시켜주는 모듈
사용방법은 위의 링크에 제시된 대로
.eslintrc 파일에 extends와 plugins를 추가시켜주니 작동이 되었다.
npm run build를 실행하고 나니 새로운 problem이 생겼다.
Generic Object Injection Sinkeslint(security/detect-object-injection)
https://stackoverflow.com/questions/51715616/how-to-fix-codacy-alert-generic-object-injection-sink
이 에러는 인덱스의 키값에 대한 보안 문제에 해당되는데 아래와 같은 예시에서 많이 발생한다.
아래와 같이 value를 바로 넣어버리게 되면, object에 다른 값이 들어간 생태로 value 값으로 들어갈 수 있다.
const property = "constructor";
const object = [];
const value = object[property];
Object의 프로토타입 중 일부인 Array() 함수는 원래의 Object.Prototype 값을 가지고 있기 때문에 배열에 인덱스로 값을 그대로 넣어버리면 디폴트 값으로 있는 Object.Prototype오버라이딩 시켜서 잠재적인 문제를 일으 킬 수 있다. 따라서 아래와 같이 수정해야 한다.
const property = "constructor";
const object = [];
if (object.hasOwnProperty(property)) {
const value = object[property];
}
이렇게 디폴트 값이 있는지 확인을 한 후에 값을 넣어주게 되면, 문제가 해결되게 된다.
https://eslint.org/docs/rules/no-prototype-builtins
하지만 다른 린트와 충돌하여 에러가 났다.
더 찾아본 결과 인덱스 값에 숫자형일 때는 숫자형을 명시해주고 문자열일 때는 문자열임을 체크해주어도 해당 에러가 해결된다고 한다.
따라서 문자열 키값을 다음과 같이 변경하여 해결하였다.
배열이름[`${key}`] = String(배열이름[`${key}`]);
문제가 해결되니 린트에서 problem이 해결된걸 볼 수 있었다.
이런 문제들은 린터가 없엇다면 생각하기 어려운 점이였을텐데 보안에 신경쓸때는 해당 린트를 쓰는것도 좋은것 같다.
'개발 > backend' 카테고리의 다른 글
Jest에서 error를 발생시켜야 하는 경우 테스트 (0) | 2021.09.06 |
---|---|
Jest 를 이용하여 파일 하나 테스트 (0) | 2021.09.06 |
Toobusy.js에 대하여 (0) | 2021.08.27 |
Restful API에 맞게 수정하기 (0) | 2021.08.05 |
Typescript) string을 받아와서 enum으로 고칠 경우 any를 안쓰고 타입체크하는 방법 (0) | 2021.07.30 |