제 XNUMX 자 코드 종속성의 위험

이 페이지의 링크에서 서비스에 가입하면 Reeves and Sons Limited가 수수료를 받을 수 있습니다. 우리의 윤리 성명서.

인터넷에서 소프트웨어가 작동하는 방식에는 몇 가지 좋은 점이 있습니다. 처음에는 수많은 비공식 네트워크로 수백만 명의 응용 프로그램을 구동하는 데 도움이되는 거대한 코드 조각 저장소에 기여하고 있습니다.

웹 페이지 하단에 "Powered by So-And-So"라는 작은 링크가 표시될 때마다 이러한 협업 효과가 실제로 나타나는 것을 목격하고 있는 것입니다.

물론 사람들이 이러한 제3자 공유 및 협업을 좋아하는 주된 이유는 이미 존재하는 것을 다시 발명하지 않기 때문에 개발 시간을 많이 절약할 수 있기 때문입니다.

그러나 타사 코드 공유 시스템의 이러한 큰 이점에도 불구하고 우리가 곧 살펴보게 될 것처럼 이러한 코드 조각을 사용하지 않으려는 데에는 많은 이유가 있습니다.

1. 잠재적인 보안 위험

웹에서 무엇이든 구동하는 거의 모든 코드가 오픈 소스이기 때문에 특정 응용 프로그램에 악성 페이로드가 있는 경우 개발자 커뮤니티에서 이를 신속하게 발견하고 신속하게 수정할 것입니다.

그러나 이러한 코드 조각 중 상당수는 하루에 수백 또는 수천 번 다운로드되며 모든 관리 팀이 안전한 코드 공유 시스템을 유지 관리하는 데 최선을 다하고있는 것은 아닙니다.

응용 프로그램이 더 크고 복잡할수록 몇 줄의 코드를 모호한 곳에 추가하여 감염시키기가 더 쉽습니다. 거의 모든 사람이 코드를 신뢰할 수 있다고 가정하기 때문에 애플리케이션의 모든 코드 라인을 면밀히 조사 할 시간이 거의 없습니다.

고도로 숙련 된 프로그래머는 일반적으로 코드의 악의적 인 특성을 난독 화하는 좋은 작업을 수행 할 수 있으며, 다른 고도로 숙련 된 프로그래머 만이 그 목적이 무엇인지 알아낼 것입니다. 악성 코드 조각이 탐지되면.

2. 당신은 그것을 소유하지 않습니다

이것은 실제로 문제의 조합입니다. 첫 번째는 다양한 라이센스 조건이 적용될 수 있다는 것입니다. 단일 웹 페이지 나 응용 프로그램에서 여러 코드 조각을 사용하는 경우 실제로 여러 가지 라이선스 조건이 적용될 수 있으며이 중 일부는 실제로 서로 충돌 할 수 있습니다.

물론 이 지루한 이용 약관 목록을 읽는 데 신경을 쓰는 사람은 거의 없지만, 이는 잠재적으로 실수일 수 있습니다.

특히 라이센스 계약의 일부 조건으로 인해 본국이나 서버가 위치한 국가의 일부 법률을 위반하게 된다면 이는 실수가 될 것입니다.

또 다른 문제는 코드를 소유하지 않은 경우 코드를 제어할 수 없으며 코드의 모든 기능이나 작동 방식을 반드시 이해하지 못할 수도 있다는 것입니다.

즉, 누군가 코드를 일부 변경하면 해당 변경 사항이 계속 유지될 수 있습니다. 특히 업데이트, 패치, 업그레이드 및 새 버전이 정식으로 출시되자마자 충실하게 설치하거나 콘텐츠 전달에만 전적으로 의존하는 경우에는 더욱 그렇습니다. 타사 솔루션을 위한 네트워크.

3. 당신은 종종 필요한 것보다 훨씬 더 많은 것을 얻습니다

제3자 코드는 일반적으로 원하는 작업을 수행하는 데 작동하지만 때로는 필요하지 않고 아마도 절대 사용하지 않을 모든 종류의 추가 기능을 포함합니다.

어떤 경우에는 이러한 추가 기능을 쉽게 또는 전혀 제거할 수 없습니다. 타협해야 할 수도 있습니다. 이 기능은 의도한 것과 매우 유사한 작업을 수행할 수 있지만 의도한 것과 정확히 일치하지는 않습니다. 당신은 할 일을 줄이기 위해 멋진 것을 거래하고 있는데, 그것이 항상 좋은 거래는 아닙니다.

4. 여러 수준의 타사 종속성으로 인해 실제 문제가 발생할 수 있습니다.

많은 오픈 소스 프로젝트는 동일한 타사 코드 조각을 다양한 방식으로 사용하여 소프트웨어를 제작합니다. 대부분의 경우 이는 나쁜 것은 아니지만 문제를 일으킬 수 있습니다.

요즘에는 많은 개발자가 사용 중인 프래그먼트를 설치하지도 않고 요청 시 콘텐츠 전달 네트워크에서 런타임에 프래그먼트를 가져옵니다. 이것의 위험성은 2016년의 Left-Pad 사건을 통해 극적으로 드러났습니다.

모든 사슬은 가장 약한 고리만큼만 강합니다. 이러한 종속성 연결은 체인의 어느 링크라도 끊어지거나 손상되면 전체 체인이 오작동할 위험이 있음을 의미합니다. 어떤 상황에서는 비용이 상당히 많이 들 수 있습니다.

누구도 Left-Pad라고 불리는 작은 기능에 포함된 11줄의 코드에 담긴 힘을 의심하지 않았을 것입니다. 그러나 특정 체인 링크가 실패하자 많은 대형 웹사이트가 중단되었습니다.

가장 중요한 부분은 Left-Pad를 사용하는 대부분의 사람들이 자신이 그것을 사용하고 있는지, 그 기능이 무엇인지, 문제를 해결하는 방법을 전혀 몰랐다는 것입니다. 항목 2에 명시된 바와 같이, 해당 항목을 소유하지 않은 경우 반드시 이해하지 못할 수도 있습니다.

Left-Pad는 선의 왼쪽에 몇 개의 공백을 추가하여 선의 길이가 올바른지 확인하는 매우 간단한 기능입니다. 이제 여기서 문제는 유능한 프로그래머라면 누구나 해당 기능을 쉽게 복제할 수 있다는 것입니다.

어떤 애플리케이션도 이 제XNUMX자 기능에 의존할 필요가 전혀 없지만 Netflix, Facebook, Reddit을 포함하여 수천 개의 웹사이트에서 이 기능이 포함된 소프트웨어를 사용하고 있었습니다. 이 경우에는 자체 종속성 체인이 있는 매우 복잡한 함수가 아니라 체인을 끊는 매우 간단한 함수라는 점은 행운이었습니다.

결론은 직접 만들 수 있다면 아마해야합니다!

궁극적으로 프로젝트에서 타사 코드 블록을 사용할지 여부에 대한 결정은 절대로 절대로 취해서는 안되는 일련의 복잡한 결정으로 이어집니다. 고려해야 할 요소는 보안, 합법성, 비용, 시간 및 안정성입니다.

의사 결정 프로세스를 단순화하기 위해 다음 테스트 조건이 도움이 될 것입니다.

이러한 요소 중 하나라도 해당되는 경우 :

  • 원하는 기능은 간단합니다
  • 귀하 (또는 귀하의 팀)는 기능을 생성 할 수 있습니다
  • 함수를 만들 시간이 충분합니다
  • 당신의 응용 프로그램은 좋은 보안이 필요합니다
  • 타사 라이센싱과 관련된 잠재적 인 법적 문제에 대한 우려가 있습니다
  • 응용 프로그램이 절대 실패해서는 안된다는 것이 중요합니다

그런 다음 직접 만들어야합니다.

그렇지 않으면 잠재적 인 문제점을 알고 있고 그러한 문제점이 발생할 경우 수행 할 조치를위한 전략이있는 경우 타사 기능을 사용하는 것이 더 효율적일 수 있습니다.

보그 단 란 세아

Bogdan은 Inspired Mag의 창립 멤버로서이 기간 동안 거의 6 년의 경험을 축적했습니다. 여가 시간에는 클래식 음악을 공부하고 시각 예술을 탐구하는 것을 좋아합니다. 그는 또한 수정 프로그램에 상당히 집착하고 있습니다. 그는 이미 5를 소유하고 있습니다.

코멘트 0 응답

댓글을 남겨주세요.

귀하의 이메일 주소는 공개되지 않습니다. *표시항목은 꼭 기재해 주세요. *

평점 *

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터 처리 방법 알아보기.