제 XNUMX 자 코드 종속성의 위험

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

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

물론 사람들이 이러한 제 XNUMX 자 공유 및 공동 작업을 좋아하는 주된 이유는 이미 존재하는 것을 재발 명하지 않기 때문에 개발 시간을 많이 절약 할 수 있기 때문입니다. 그러나 타사 코드 공유 시스템의 이러한 큰 이점에도 불구하고 이러한 코드 조각을 사용하지 않으려는 이유는 많이 있습니다.

1. 잠재적 보안 위험

웹에서 무엇이든 구동하는 거의 모든 코드가 오픈 소스이기 때문에 주어진 응용 프로그램에 악성 페이로드가 있으면 개발자 커뮤니티에서 신속하게 발견하고 신속하게 수정한다는 것이 좋습니다.

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

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

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

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

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

물론이 지루한 이용 약관 목록을 읽는 사람은 거의 없지만, 이는 실수 일 수 있습니다. 라이센스 계약의 일부 조건으로 인해 귀하의 모국이나 서버가있는 국가에서 일부 법률을 위반 한 경우 특히 실수입니다.

다른 문제는 코드를 소유하지 않은 경우 코드를 제어 할 수 없으며 코드가 수행하는 모든 작업이나 작동 방식을 반드시 이해할 필요는 없다는 것입니다. 즉, 누군가 코드를 약간 변경하면 특히 변경 사항이 릴리스되는 즉시 업데이트, 패치, 업그레이드 및 새 버전을 충실하게 설치하거나 콘텐츠 전달에 전적으로 의존하는 경우 변경 사항이 고착 될 수 있습니다 타사 솔루션을위한 네트워크.

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

타사 코드는 일반적으로 원하는 작업을 수행하기 위해 작동하지만 때로는 필요하지 않고 사용하지 않을 모든 종류의 추가 기능이 포함되어 있습니다. 경우에 따라 이러한 추가 기능을 쉽게 또는 전혀 제거 할 수 없습니다. 타협해야 할 수도 있습니다. 이 기능은 의도 한 것과 매우 근접한 것을 할 수 있지만 정확히 의도 한 것과는 다릅니다. 해야 할 일이 적기 때문에 굉장한 거래를하고 있으며 항상 좋은 거래는 아닙니다.

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

많은 오픈 소스 프로젝트가 다른 방식으로 동일한 타사 코드 조각을 사용하여 소프트웨어를 제작합니다. 대부분 나쁜 일이 아니지만 문제를 일으킬 수 있습니다. 요즘 많은 개발자들은 사용중인 프래그먼트를 설치하지 않고 필요할 때 콘텐츠 제공 네트워크에서 런타임에 가져옵니다. 이 위험은 2016 년 Left-Pad Incident에 의해 훌륭하게 설명되었습니다.

모든 체인은 가장 약한 링크만큼 강력합니다. 이러한 종속성 체인은 체인의 어느 곳에서든 링크가 끊어 지거나 손상된 경우 전체 체인이 오작동 할 위험이 있음을 의미합니다. 어떤 상황에서는 비용이 많이들 수 있습니다. 누구도 Left-Pad라고하는 그 작은 기능에 포함 된 11 줄의 코드에 포함 된 힘을 의심하지 않았지만, 특정 체인 링크가 실패했을 때 많은 웹 사이트가 멈췄습니다. 그것의 주요 부분은 Left-Pad를 사용하는 대부분의 사람들이 그것을 사용하고 있는지, 어떻게했는지, 또는 문제를 해결하는 방법을 모른다는 것입니다. 항목 2에 명시된 바와 같이, 소유하지 않은 경우 반드시 이해하지 못할 수도 있습니다.

Left-Pad는 선의 길이가 올바른지 확인하기 위해 선의 왼쪽에 약간의 공백을 추가하는 매우 간단한 기능이었습니다. 이제 여기서 문제는 유능한 프로그래머가 해당 기능을 쉽게 복제 할 수 있다는 것입니다. 이 타사 기능에 의존하는 응용 프로그램은 전혀 필요하지 않지만 Netflix, Facebook 및 Reddit을 포함하여 수천 개의 웹 사이트에 포함 된 소프트웨어를 사용하고있었습니다. 이 경우에는 체인을 끊는 매우 간단한 기능이었고 고유 한 종속성 체인이있는 복잡한 기능은 아니라는 것이 행운이었습니다.

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

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

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

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

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

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

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

헤더 이미지 제공 스테파니 터커

보그 단 란 세아

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