2016-08-31 3 views
4

나는 NPM 패키지 관리자를 통해 많은 Node.js를 모듈을 사용하고 있습니다. 이러한 모듈은 신뢰할 수있는 조직에서 개발 한 것이 아니므로 신뢰할 수 있습니까?npm 모듈을 어떻게 신뢰할 수 있습니까?

나는 고궁 박물원 팀은 개발자들에 의해 제출 된 각 모듈에 대한 보안 검사를하고 있는지 모른다.

+0

나는 확실히 안보를 통해 NPM에서 많은 것을 기대하지 않을 것이다. 그들은이 점에 관하여 일반적으로 무능력하다는 것을 몇 번이고 다시 입증했습니다. 항상 자신의 보안을 확인하십시오. –

답변

7

NPM은 무엇 때문에 과거의 어떤 검사를하고 있지 않습니다. 그들은 단지 레지스트리 일뿐입니다. 모든 것이 개발자 커뮤니티와 공유에 대한 신뢰 위에 세워졌습니다.

대부분의 노드 모듈은 오픈 소스이고, 당신이 자신의 저장소 (일반적으로 GitHub의)에 자신의 코드를 검토 할 수 있습니다. 그래서 그것이 그들을 '신뢰'하는 가장 좋은 방법입니다. 일부 노드 모듈은 미리 작성된 기본 바이너리를 제공하므로 어떤 방식 으로든 위험 할 수 있지만 인기가있는 경우 (예 : ws) 아무런 문제가 없습니다. npm 게시자 사용자를 확인할 수도 있습니다.이 사용자는 때때로 oracle과 같은 알려진 회사입니다.

0

아이디어는 가장 인기 npm 모듈을 찾을 수 있습니다. 각 프로젝트의 별을 확인하여이 작업을 수행 할 수 있습니다.

몇 가지 팁 :

사용 NPM이 dev에 환경에서 종속성을 관리 할 수 ​​있지만 배포 스크립트합니다.

npm과 같은 도구는 개발 도구입니다. 모듈을 다운로드하고 업데이트하는 편리한 방법입니다. 이들은 배포 도구가 아니며 배포 도구가 아니므로 배포에 사용하면 안됩니다!

개발 저장소에 npm shrinkwrap을 사용하고 결과를 확인하십시오. 이 하위 의존성을 포함하여, 장소에

자세한 내용 here

+2

'shrinkwrap'으로 충분해야합니다. 레포를 포크 할 필요는 없습니다, 맞습니까? – Bergi

+0

맞습니다! 대답을 편집했습니다 – nikjohn

0

당신이 신뢰하지 않는 패키지를 설치하는 경우

npm install --ignore-scripts을 실행하여이 취약점을 방지 할 수 있습니다 당신의 모듈 버전을 잠급니다 자세한 내용은

여기

here이 멋진 블로그 확인 이는 NPM에서 사용할 수있는 몇 가지 프로그램이 있습니다

0

, 즉 당신의 package.json에 대해 실행하고 알려진 취약점을 확인할 수 있습니다 blog 명확한 그림을 당신에게 제공 할 수 있습니다. 완벽하지는 않지만 훌륭한 출발. 제가 사용한 것은 nsp입니다 만 다른 것들도 있습니다. https://nodesecurity.io/opensource

1

당신은

npm install nsp --global 
nsp check 

더 많은 정보를 원하시면 여기 당신의 package.json에서 모든 모듈을 감사하는 데 도움이 Node Security Platform에서 제공하는 nsp 도구를 사용할 수 있습니다! 거의 모든 노드 모듈은 오픈 소스이므로 실제로 모듈 뒤에있는 코드 스 니펫을 볼 수 있습니다.이것은 응용 프로그램에서 사용하고자하는 패키지에 대한 신뢰를 구축하는 데 도움이 될 수 있습니다.

0

예 :

0

이 모듈은 PHP/Apache와 같은 조직에서 개발하지 않았기 때문에 안전하지는 않습니다. nsp 모듈을 사용하여 노드 모듈의 보안 문제를 확인할 수도 있습니다.

More info

1

사실 나는 많은 패키지에 사용하지 마십시오

1)
2) 몸 & 쿠키 파서을 표현 (가끔은
3)) 미들웨어를 쓸 게으른 해요 ,
4) 퍼,
5) 요청
6) 비동기,
7) lodash, 몽구스
8) 캐릭터

다른 모든 것들 내가 직접 작성하고 "구성 요소"폴더에 넣습니다. (모든 버전 nodejs에 기본적으로의 포함)

const md5 = require('md5'); 
    let data = 'something'; 
    data = md5(data); 

하지만 crypto 함께 할 :

의가하는 너무 게으른 사람들의 대부분을 가정 해 봅시다

const crypto = require('crypto'); 
    let data = 'something'; 
    data = crypto 
      .createHash('md5') 
      .update(data.toString()) 
      .digest('hex'); 

내가하지에 논리를 유지 패키지를 사용하려면 :

1) 패키지가 작 으면 (패키지 파일을 읽지 못하면 패키지를 읽지 않습니다)
2) 버전은 더 갈 것 1.0.0 (어떠한 보증도)
3)

이 BTW 내 응용 프로그램의 nsp check 말한다 저장소에없는 최근의 반복 (커밋) 이상되지 않습니다 : (+) No known vulnerabilities found (:

+0

현명한 마음의 몇 가지 슈퍼 duper 모방 내 대답 downvoted ... Ehhh 내가 생각하는 것을 썼습니다. – num8er

관련 문제