"왼쪽 왼쪽"시작: 보안 코드는 항상 품질 코드입니까?

게시됨 Feb 10, 2021
작성자: 마티아스 마두, 박사
TL;DR?

로렘 입섬 돌로는 아메트, consectetur adipiscing 엘리트 앉아있다. 에로스 원소 tristique에서 Suspendisse varius enim. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem im imperdiet. Nunc ut sem vitae risus tristique posuere.

이 문서의 버전은 어두운 읽기에나타났다. 여기에 업데이트되고 신디케이트되었습니다.

보안에 대해 개발자와 이야기 할 때, 내 진언 중 하나는 "유일한 품질 코드는 보안 코드입니다"라는 것입니다. 이것은 사실로 남아 있습니다. 우리는 취약한 소프트웨어가 90 년대에 야생에서 나왔을 때 재앙을 피할 수 있지만 오늘날 위험할 만한 가치가 없습니다. 많은 사람들이 수년에 걸쳐 개발자에게 보안 인식 사고 방식을 심어주기 위해 열심히 노력해 왔으며, 그렇게 함으로써 자기 자신에게 있어 보안이 품질과 동의어로 만들어졌으면 좋겠습니다. assessment 코드의.

그러나 반성 (그리고 동료들 사이에서 몇 가지 논쟁)이되면 개념을 지나치게 단순화할 수 있습니다. 실제로 안전한 코드를 만들 수 있지만 초보 개발 기술 또는 이상적이지 않은 다른 문제 영역의 징후를 보여 줄 수 있습니다.

우리 업계는 '좌파 이동'이라는 개념에 대해 긴 이야기를 나타남. 내 마음에, 그것은 모든 엔지니어링 코호트가 보안에 대한 책임을 공유 할 수 있도록하여 왼쪽에 대한 (품질의 측면인), 그들에게 자신의 (문자 그대로) 손끝에서 일반적인 취약점을 지울 수있는 힘을 제공. 이 현재의 수수께끼에 비추어 볼 때 봉투를 조금 더 밀어야하는 것 같습니다.

일정 수준의 품질 코드는 정의에 의해도 안전하지만 모든 보안 코드가 반드시 좋은 품질은 아닙니다. 순수한 보안 코딩 표준을 보장하기 위해 수식을 "왼쪽"으로 시작하고 있습니까?

"품질 이 좋지 않은" 보안 코드는 어떤 모습일까요?

이 코드 스니펫을 통해 돋보기를 살펴보겠습니다.

보안 관점에서 이 코드를 분석하는 경우 이 스니펫은 실제로 안전하며 공격자가 SQL 주입 취약점을 악용하는 진입점이 아닙니다.  

고품질 코드의 예인가요? 정말, 불행하게도. int(eger)에서 문자열 값으로 인수를 간단하게 변경하면 자유 형식 사용자 입력이 쿼리를 조작할 수 없는 숫자와 달리 쿼리를 조작할 수 있습니다. 이러한 변경 또는 다른 곳에서 문자열 SQL의 우연한 복사 및 붙여넣기는 SQL 주입 취약점이 발생할 수 있는 환경과 다음과 관련된 모든 위험을 즉시 만듭니다.

보안 조치는 매우 제한된 범위를 가지고 있지만, 더 철저한 (또는 경험이 풍부한) 개발자는 다른 접근 방식을 취하고 비효율적인 인수 구조의 의미를 고려했을 수 있습니다. 이와 같은 배송 코드는 가난한 관행일 뿐만 아니라 개발 코호트의 다른 사람들에게 나쁜 모범을 보입니다.

소프트웨어 "트리플 위협": 형태, 기능, 요새 와 같은?

엔터테인먼트 업계의 "삼중 위협"은 똑같이 높은 수준의 기술로 행동하고 춤을 추며 노래할 수 있는 개인입니다. 그들은 모든 오디션에서 두려워하고 부러워하는 사람들이며 이미 경쟁적인 공간의 유니콘입니다. 모든 산업에는 자체 버전의 최상위 계층, 제품 및 서비스의 예외적인 예가 있으며 소프트웨어도 예외는 아닙니다.

동일한(고품질) 품질과 균형을 맞추기 어려운 응용 프로그램의 세 가지 핵심 요소를 생각하면 기능/우아함과 철로 덮인 보안, 필요한 배송 속도를 고려할 때 비용 효율성이 있을 수 있습니다. 이제 마지막 특성은 의심 할 여지없이 다른 두 옵션이 얼마나 잘 적용되는지에 대한 정의 요소이며 시간이 지남에 따라 전반적인 품질 미끄러짐을위한 촉매제가 될 수 있습니다.

그러나 모든 소프트웨어가 휴 잭맨처럼 수행해야합니까, 아니면 니콜라스 케이지와 도망갈 수 있습니까? 이렇게 말하십시오 : 울버린을 팀에 배치 할 수 있다면 최고의 기회를 제공합니다.

마틴 파울러는 질문, 높은 품질 가치가 비용? 소프트웨어 개발에서, 뿐만 아니라 "가치가"결론을 내렸다, 하지만 실제로 시간이 지남에 따라 저렴했다. 대부분의 사용자는 코드가 엉망인지, 또는 보안이 다른 모든 것만큼 중요한지 여부를 평가하기 위해 후드 아래에서 보고 있지 않을 것입니다. 그러나 도구에 있는 사람들은 새로운 기능에 추가하기 위해 실수 코드를 다시 수행하거나 프로젝트의 주요 부분을 트롤링하여 무슨 일이 일어나고 있는지 이해하거나 AppSec 팀에서 반송된 취약점을 수정하고 생산을 지연시키는 최악의 시나리오를 트롤링하는 귀중한 시간을 낭비합니다. 코드를 안전하고 좋은 품질로 만들기 위해 시간을 보내는 것은 제대로 실행되지 않은 작업을 해명하는 비용은 말할 것도없고 미래의 많은 고통을 절약 할 수 있습니다.

숙련된 보안 인식 개발자는 기능 제공에서 창의적이고 문제 해결 비전을 유지하는 코드를 작성하며, 엔지니어가 프로세스 단계에서 제어할 수 있는 일반적인 보안 함정을 지워야 합니다. 보안 코드는 격리에 매우 효과적이지 않으며, "왼쪽 왼쪽"을 시작하는 개념은 개발자에게 두 번째 특성으로 보안 문화를 지원하는 데 도움이되며, 위험이 감소된 놀라운 기능을 제공할 수 있습니다.

"왼쪽 왼쪽"을 시작하는 것은 안전한 사용자 경험에 매우 중요합니다.

보안은 오랫동안 소프트웨어 사용자 경험을 고려해 왔지만 성공이 분명했습니다. 보안 오구성은 지난 한 해 동안 클라우드 기반 데이터 유출의 21%를 차지했으며, 아마추어 시간 오류는 암호를 일반 텍스트로 저장하여 영향을 받는 회사에 대한 생산성, 수익 및 고객 신뢰에 심각한 손실을 초래했습니다.

즉, 사용자 자신은 자신의 데이터를 보호에 올 때 자신의 최악의 적이 될 수 있습니다. 너무 많은 사람들이 여전히 암호로 "암호"를 사용하거나 여러 중요한 계정에서 동일한 조합을 사용하고 있습니다.

나는 그들이 로그인 화면에서 작동해야한다고 들었을 때 공기를 주먹펌프 하는 개발자를 모른다, 그리고 그것은 당연하다 : 그것은 강력하고 기능적인 보안 흐름을 설계하는 섬세한 균형이며, 사용자가 그들에게 의미가있는 방식으로 탐색 할 수있을 것입니다, 최소한의 혼란.

너무 많은 복잡한 단계와 제한사항을 적용하면 사용자가 돌아오지 않도록 전원을 끄지 않을 수 있으며(새 앱에 대한 재해) 너무 혼란스러워할 수 있으며, 지원 팀에 계정에 액세스하려는 사용자의 쿼리를 필드로 그룹편두통을 제공할 수 있습니다. 너무 쉽게 만들고 보안 부분에서 실패할 수 있습니다.

성공적인 보안 사용자 환경은 소프트웨어에 대한 설득력있는 다른 모든 것을 손상시키지 않는 방식으로 제공되는 흐름에 엄격한 보안을 짜야합니다. 당신은 확실히 복잡한 암호 요구 사항, CAPTCHA, 미니 보스, 좀비의 네 파도의 모든 방법을 넣어 보안 로그인 기능을 코딩의 목표를 충족 할 수 있지만, 그것은 사용자에게 격퇴하는 총 혼란인 경우, 그것은 마크를 누락.

소프트웨어 우수성의 토대를 마련하십시오.

개발자로서, 나는 우리 대다수가 우리의 일에 자부심을 가지고, 옳은 일을하고 싶다는 것을 알고있다. 시간 제약, 현재 목표의 갑작스런 변화 또는 긴급 핫픽스와 같은 성가신 커브볼은 흐름을 방해하고 실수로 이어질 수 있지만, 가혹한 진실은 많은 소프트웨어 엔지니어가 성공을 위해 설정되지 않았다는 것입니다.

"왼쪽 왼쪽"을 시작하는 것은 개발자 우선 개념이며 조직이 엔지니어링 코호트를 고양시키는 데 진지해야 합니다. 보안 인식 개발자는 금에 무게를 두는 가치가 있으며, 교육, 올바른 도구 제공 및 경험이 풍부한 개발자가 멘토링할 수 있는 기회는 소프트웨어를 다음 단계로 끌어올리는 데 필요한 정밀도와 세부 사항에 대한 정밀도와 주의를 기울여 보안 우선 사고 방식으로 코드가 제작되는 환경을 조성할 것입니다.

보안 코딩 불을 붙일 준비가 되셨습니까? 도전에 상승.

리소스 보기

저자

마티아스 마두 박사

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

"왼쪽 왼쪽"시작: 보안 코드는 항상 품질 코드입니까?

게시일: Mar 07, 2023
마티아스 마두, 박사

이 문서의 버전은 어두운 읽기에나타났다. 여기에 업데이트되고 신디케이트되었습니다.

보안에 대해 개발자와 이야기 할 때, 내 진언 중 하나는 "유일한 품질 코드는 보안 코드입니다"라는 것입니다. 이것은 사실로 남아 있습니다. 우리는 취약한 소프트웨어가 90 년대에 야생에서 나왔을 때 재앙을 피할 수 있지만 오늘날 위험할 만한 가치가 없습니다. 많은 사람들이 수년에 걸쳐 개발자에게 보안 인식 사고 방식을 심어주기 위해 열심히 노력해 왔으며, 그렇게 함으로써 자기 자신에게 있어 보안이 품질과 동의어로 만들어졌으면 좋겠습니다. assessment 코드의.

그러나 반성 (그리고 동료들 사이에서 몇 가지 논쟁)이되면 개념을 지나치게 단순화할 수 있습니다. 실제로 안전한 코드를 만들 수 있지만 초보 개발 기술 또는 이상적이지 않은 다른 문제 영역의 징후를 보여 줄 수 있습니다.

우리 업계는 '좌파 이동'이라는 개념에 대해 긴 이야기를 나타남. 내 마음에, 그것은 모든 엔지니어링 코호트가 보안에 대한 책임을 공유 할 수 있도록하여 왼쪽에 대한 (품질의 측면인), 그들에게 자신의 (문자 그대로) 손끝에서 일반적인 취약점을 지울 수있는 힘을 제공. 이 현재의 수수께끼에 비추어 볼 때 봉투를 조금 더 밀어야하는 것 같습니다.

일정 수준의 품질 코드는 정의에 의해도 안전하지만 모든 보안 코드가 반드시 좋은 품질은 아닙니다. 순수한 보안 코딩 표준을 보장하기 위해 수식을 "왼쪽"으로 시작하고 있습니까?

"품질 이 좋지 않은" 보안 코드는 어떤 모습일까요?

이 코드 스니펫을 통해 돋보기를 살펴보겠습니다.

보안 관점에서 이 코드를 분석하는 경우 이 스니펫은 실제로 안전하며 공격자가 SQL 주입 취약점을 악용하는 진입점이 아닙니다.  

고품질 코드의 예인가요? 정말, 불행하게도. int(eger)에서 문자열 값으로 인수를 간단하게 변경하면 자유 형식 사용자 입력이 쿼리를 조작할 수 없는 숫자와 달리 쿼리를 조작할 수 있습니다. 이러한 변경 또는 다른 곳에서 문자열 SQL의 우연한 복사 및 붙여넣기는 SQL 주입 취약점이 발생할 수 있는 환경과 다음과 관련된 모든 위험을 즉시 만듭니다.

보안 조치는 매우 제한된 범위를 가지고 있지만, 더 철저한 (또는 경험이 풍부한) 개발자는 다른 접근 방식을 취하고 비효율적인 인수 구조의 의미를 고려했을 수 있습니다. 이와 같은 배송 코드는 가난한 관행일 뿐만 아니라 개발 코호트의 다른 사람들에게 나쁜 모범을 보입니다.

소프트웨어 "트리플 위협": 형태, 기능, 요새 와 같은?

엔터테인먼트 업계의 "삼중 위협"은 똑같이 높은 수준의 기술로 행동하고 춤을 추며 노래할 수 있는 개인입니다. 그들은 모든 오디션에서 두려워하고 부러워하는 사람들이며 이미 경쟁적인 공간의 유니콘입니다. 모든 산업에는 자체 버전의 최상위 계층, 제품 및 서비스의 예외적인 예가 있으며 소프트웨어도 예외는 아닙니다.

동일한(고품질) 품질과 균형을 맞추기 어려운 응용 프로그램의 세 가지 핵심 요소를 생각하면 기능/우아함과 철로 덮인 보안, 필요한 배송 속도를 고려할 때 비용 효율성이 있을 수 있습니다. 이제 마지막 특성은 의심 할 여지없이 다른 두 옵션이 얼마나 잘 적용되는지에 대한 정의 요소이며 시간이 지남에 따라 전반적인 품질 미끄러짐을위한 촉매제가 될 수 있습니다.

그러나 모든 소프트웨어가 휴 잭맨처럼 수행해야합니까, 아니면 니콜라스 케이지와 도망갈 수 있습니까? 이렇게 말하십시오 : 울버린을 팀에 배치 할 수 있다면 최고의 기회를 제공합니다.

마틴 파울러는 질문, 높은 품질 가치가 비용? 소프트웨어 개발에서, 뿐만 아니라 "가치가"결론을 내렸다, 하지만 실제로 시간이 지남에 따라 저렴했다. 대부분의 사용자는 코드가 엉망인지, 또는 보안이 다른 모든 것만큼 중요한지 여부를 평가하기 위해 후드 아래에서 보고 있지 않을 것입니다. 그러나 도구에 있는 사람들은 새로운 기능에 추가하기 위해 실수 코드를 다시 수행하거나 프로젝트의 주요 부분을 트롤링하여 무슨 일이 일어나고 있는지 이해하거나 AppSec 팀에서 반송된 취약점을 수정하고 생산을 지연시키는 최악의 시나리오를 트롤링하는 귀중한 시간을 낭비합니다. 코드를 안전하고 좋은 품질로 만들기 위해 시간을 보내는 것은 제대로 실행되지 않은 작업을 해명하는 비용은 말할 것도없고 미래의 많은 고통을 절약 할 수 있습니다.

숙련된 보안 인식 개발자는 기능 제공에서 창의적이고 문제 해결 비전을 유지하는 코드를 작성하며, 엔지니어가 프로세스 단계에서 제어할 수 있는 일반적인 보안 함정을 지워야 합니다. 보안 코드는 격리에 매우 효과적이지 않으며, "왼쪽 왼쪽"을 시작하는 개념은 개발자에게 두 번째 특성으로 보안 문화를 지원하는 데 도움이되며, 위험이 감소된 놀라운 기능을 제공할 수 있습니다.

"왼쪽 왼쪽"을 시작하는 것은 안전한 사용자 경험에 매우 중요합니다.

보안은 오랫동안 소프트웨어 사용자 경험을 고려해 왔지만 성공이 분명했습니다. 보안 오구성은 지난 한 해 동안 클라우드 기반 데이터 유출의 21%를 차지했으며, 아마추어 시간 오류는 암호를 일반 텍스트로 저장하여 영향을 받는 회사에 대한 생산성, 수익 및 고객 신뢰에 심각한 손실을 초래했습니다.

즉, 사용자 자신은 자신의 데이터를 보호에 올 때 자신의 최악의 적이 될 수 있습니다. 너무 많은 사람들이 여전히 암호로 "암호"를 사용하거나 여러 중요한 계정에서 동일한 조합을 사용하고 있습니다.

나는 그들이 로그인 화면에서 작동해야한다고 들었을 때 공기를 주먹펌프 하는 개발자를 모른다, 그리고 그것은 당연하다 : 그것은 강력하고 기능적인 보안 흐름을 설계하는 섬세한 균형이며, 사용자가 그들에게 의미가있는 방식으로 탐색 할 수있을 것입니다, 최소한의 혼란.

너무 많은 복잡한 단계와 제한사항을 적용하면 사용자가 돌아오지 않도록 전원을 끄지 않을 수 있으며(새 앱에 대한 재해) 너무 혼란스러워할 수 있으며, 지원 팀에 계정에 액세스하려는 사용자의 쿼리를 필드로 그룹편두통을 제공할 수 있습니다. 너무 쉽게 만들고 보안 부분에서 실패할 수 있습니다.

성공적인 보안 사용자 환경은 소프트웨어에 대한 설득력있는 다른 모든 것을 손상시키지 않는 방식으로 제공되는 흐름에 엄격한 보안을 짜야합니다. 당신은 확실히 복잡한 암호 요구 사항, CAPTCHA, 미니 보스, 좀비의 네 파도의 모든 방법을 넣어 보안 로그인 기능을 코딩의 목표를 충족 할 수 있지만, 그것은 사용자에게 격퇴하는 총 혼란인 경우, 그것은 마크를 누락.

소프트웨어 우수성의 토대를 마련하십시오.

개발자로서, 나는 우리 대다수가 우리의 일에 자부심을 가지고, 옳은 일을하고 싶다는 것을 알고있다. 시간 제약, 현재 목표의 갑작스런 변화 또는 긴급 핫픽스와 같은 성가신 커브볼은 흐름을 방해하고 실수로 이어질 수 있지만, 가혹한 진실은 많은 소프트웨어 엔지니어가 성공을 위해 설정되지 않았다는 것입니다.

"왼쪽 왼쪽"을 시작하는 것은 개발자 우선 개념이며 조직이 엔지니어링 코호트를 고양시키는 데 진지해야 합니다. 보안 인식 개발자는 금에 무게를 두는 가치가 있으며, 교육, 올바른 도구 제공 및 경험이 풍부한 개발자가 멘토링할 수 있는 기회는 소프트웨어를 다음 단계로 끌어올리는 데 필요한 정밀도와 세부 사항에 대한 정밀도와 주의를 기울여 보안 우선 사고 방식으로 코드가 제작되는 환경을 조성할 것입니다.

보안 코딩 불을 붙일 준비가 되셨습니까? 도전에 상승.

양식을 작성하여 전체 보고서에 액세스하세요.

우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.