코딩시 보안에 대해 적극적으로 생각하십니까?


9

코딩 할 때 원래 의도하지 않은 방식으로 코드가 악용되어 보호 된 정보에 액세스하거나 명령을 실행하거나 사용자가 원하지 않는 다른 작업에 액세스 할 수 있다고 적극적으로 생각하십니까?


무엇을 코딩 할 때? 나는 많은 다른 일을합니다.
David Thornley

9
그렇습니다. 일반적으로 "담배, 나는 시간이 없다, 아무도 찾을 수 있기를 바랍니다"와 유사한 문구에서.
liori

답변:


10

Kindof. 면책 조항 : 나는 보안 사람입니다.)

제가 일하는 방식은 어떤 종류의 공격자가 어떤 종류의 공격을하는지 설명하는 내 위협 모델을 가지고 있다는 것입니다. 보안 요구 사항을 해결하는 데 도움이됩니다. 실제로 코딩 할 때는 커서 변수가 항상 범위 내에 있고, 오염 된 입력이 손상되고, 오류 조건이 처리되도록주의하는 것과 같은 일반적인 "안전한 코딩"방법을 사용합니다. 그런 다음 위협 모델로 돌아가서 어떤 모듈이 공격자에게 가장 많이 노출 될 수 있는지 확인합니다. 그것들은 약간의 추가 검토를받습니다.


4

SQL 매개 변수 사용과 같은 업계 표준 사례를 사용합니다. .NET Framework와 같은 "안전한"플랫폼을 사용하고 ASP.NET MVC의 위조 방지 토큰과 같은 보안 기능을 활용합니다. 필자는 자체 암호화 알고리즘을 작성하지는 않지만 해당 암호화가 보안 이점을 제공하는 방법과 이러한 보안 이점을 얻기 위해 사용해야하는 경우를 이해합니다.

간단히 말해 모범 사례를 사용하지만 자체 보안 도구를 개발하지는 않습니다. 나는 그 점에서 보안 전문가가 아닙니다. 나는 이미 이러한 문제에 대해 깊이 생각하고 위험과 이점에 대해 명확하게 이해하고있는 다른 보안 전문가에게 의지합니다.

보안 도구를 사용하는 것 이상의 보안에 대한 나의 기본 접근 방식은 내가 기대하는 것을 제외하고 시스템에 가능한 모든 입력을 제거하는 것입니다. 사회 보장 번호 필드가있는 경우 실제로 표시되어야하는 유일한 문자는 특정 패턴의 숫자와 대시입니다.

클라이언트와 서버 모두에서 사용자 입력을 확인합니다.


기본 제공 보안 기능을 사용하는 데 동의하지만, 언제, 어떻게 사용하는 것이 적절한 지 고려해야합니다. 나는 당신의 제품에 대한 보안을 생각하기 위해 다른 사람들에게 의존하는 것에 대해 걱정하고 있습니다. 그들은 그렇게하지 않았습니다.
Michael Shaw

@Ptolemy : SQL 문을 매개 변수화하는 것이 적절 하지 않은 경우? 위조 방지 토큰을 사용하는 것이 부적절한 경우 는 언제 입니까? 데이터가 민감한 경우 암호화를 사용 하는 것이 언제 적절 하지 않습니까?
Robert Harvey

잠시 동안 암호화를 고려해 봅시다. 첫 번째 질문은 어떤 암호화를 사용합니까? 잘못된 암호화를 사용하면 잘못된 보안 감각이 나타납니다. 어느 시점에서 데이터를 해독해야합니다. 어느 시점에서 코드의 복잡성과 비교할 때의 위험은 무엇입니까? 암호화는 실제로 어떤 보호 기능을 제공합니까? dll 바이트 코드가 암호화되어 있거나 DLL에서 암호화 키를 읽을 수 있습니까? 그렇기 때문에 이해가 거의 없거나 전혀없는 기능을 사용하는 것이 위험합니다.
Michael Shaw

@ 프톨레마이오스 : 보안에 대해 생각해 보면 이것이 의미하는 바라면,이 도구를 제대로 사용하려면 실제로 이러한 사실을 알아야합니다.
Robert Harvey

3

물론.

보안이 전부입니다. 그리고 수치 소프트웨어를 사용하면 두 배가됩니다.
얼마 전, 사용자는 이전 프로그램 중 하나에서 버그를 찾아서 악용했습니다. 피해는 돌이킬 수 없었습니다. 아래를보십시오 :

대체 텍스트

예전에는 둥글 었습니다.


7
자세한 설명이 필요합니다 :)
Toby Allen


2

아니요, 보안과 관련된 문제가있는 도메인 (대량 데이터 시각화 SW)에서는 작동하지 않기 때문입니다. 내가 잘못된 코드처럼 일찍 충돌과 눈에 띄게 충돌하기 때문에 보안 문제 때문은 아니 고요, (등 인덱스 검사, 일관성 검사) 내 코드에서 주장의 무리가 있지만.


1

물론. 인젝션 취약점과 데스크톱 환경과 웹 환경에서 비즈니스 로직이 작동하는 방식 및 두 가지 유형의 환경 모두에서 보안이 구현되는 방식에 대해 생각합니다.


1

나는 보안 전문가는 아니지만 웹 응용 프로그램을 코딩 할 때 항상 사용자 입력에 모든 종류의 기이함이 포함될 수 있으며 항상 완전히 탈출해야한다고 가정합니다. 또한 Ajax가 서버로 다시 전화를 걸어 사용자가 로그인했는지 (특정 이벤트에 대해 필요한 경우) 그들이하려는 일을 할 수있는 권한이 있는지 확인합니다.

코드베이스에는 입력을위한 필터 세트가 있습니다. PHP $_GET또는 $_POST배열을 직접 확인하지 않습니다 . 대신,이 기능을 통해 쿼리를 Request::get('parameter', 'filter')같은 필터 int, text그리고 몇 가지 다른. ( Request::post()물론 POST 입력의 경우)


1

예. 멀티 플레이어 게임을 할 때는 모두 악용과 속임수에 대한 편집증이었습니다. 부정 행위는 게임 내 물건 판매와 관련된 비즈니스 모델은 말할 것도없이 게임을 완전히 파괴 할 수 있습니다. 따라서 안건 문제와 변조 방지 조치는 의제에서 매우 높았습니다. 나는 그것을 매우 좋아했다. 나는 코드가 안전하다는 것을 확신하기 위해 더 오래 코드 작업을 한 죄책감을 느끼기 전에 다른 프로젝트에서 일했습니다.


0

예. 보안은 중요하며 나중에 생각해서는 안됩니다. 사실 이후에 보안을 추가하는 것은 일반적으로 처음에 응용 프로그램에 디자인하는 것보다 어렵고 나중에 추가하면 몇 가지 사항을 놓칠 수 있습니다 (또는 전혀 추가하지 않아도됩니다).


0

보안의 일반 원칙 (무결성, 인증, 권한)을 이해 한 다음 사람들이 수천 년 동안 보안의 기둥을 어떻게 파괴했는지에 대한 몇 권의 책을 읽으십시오.

그런 다음 디자인 및 테스트 전략에 대한 몇 가지 좋은 책을 읽고 아키텍처에서 테스트 가능성을 디자인하는 방법을 배우십시오.

이제 보안에 대해 생각할 때가되었습니다. 데이터 소스의 유효성을 검사하는 방법에 대해 생각하고 있습니다. 데이터가 훼손된 경우, 데이터 소스가 누구인지, 얼마나 확실합니까? 어떻게 바뀌었을까요?

이것은 디자인에 영향을 미칩니다. 구성 파일에는 키 섹션이 암호화되어 있거나 특정 서명 필드와 연관된 서명 필드가있는 일반 텍스트 일 ​​수 있습니다. 인터넷을 향한 서비스는 더 많은 적대감을 기대해야하므로 상황이 더욱 복잡해집니다.

그런 다음 테스트 할 때이 모든 것을 어떻게 테스트합니까? 최대 데이터 입력은 무엇이며 소프트웨어를 한계를 넘어 서면 어떻게됩니까? 무엇을 믿습니까? 어떻게 그 신뢰를 속일 수 있습니까?


0

예.

나는 과거에 해커가 큰 사이트를 지속적으로 손상 시키려고 노력하고 있음을 알기 위해 충분한 해커를 처리했으며 작은 사이트조차도 안전하지 않다는 충분한 봇이 있습니다.

나는 항상 해커처럼 생각 하려고 노력한다. 때때로 우리가 매일 당연한 시스템을 어떻게 사용할 수 있는지에 대한 평범한 의견으로 동료들을 걱정하는 시점까지.


0

응용 프로그램 등에 따라 개발자가 프로세스를 기반으로 구축하는 것이어야합니다. 불행히도 개발자는 보안을 인용하지 않는 경향이 있으므로 구매자는 그것을 생각하지 않습니다 ( 구매자가 가장 저렴한 견적을 원할 경우 보안이 포함되지 않기 때문에 이것은 약간의 캐치 -22입니다.

개발자로서이 분야에 숙련 된 사람이라면 확실한 이점을 얻을 수 있습니다. 특히 은행과 금융 서비스에 대해 생각하고 있지만 다른 산업에도 적용 할 수 있습니다. 현재 그들은 새로운 졸업생들이 그 조직에 대한 프로세스, 보안 및 기타 세부 사항에 대한 속도를 높이기 위해 70-100k의 예산을 책정 할 수 있습니다. 30k를 절약 할 수 있다면 좋은 CV 플러스입니다!

영국, 정보 보안 전문가 연구소 및 스코틀랜드의 보안 및 사이버 범죄 우수 센터는 대학교와 긴밀히 협력하여 강의 자료를 검토하고 실제 코딩에 대한 실제 영향에 대한 초청 강의를 제공합니다. 법 집행 기관의 사기 행위 부서에 소프트웨어 개발자를 배치했습니다.) 대부분의 지원 단체는 많은 돈을 절약 할 수있는 잠재력을 가지고 있기 때문에 무료로이 작업을 수행하고 있습니다.

(면책 조항-다양한 글로벌 조직의 보안 담당자였습니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.