[security] 모든 프로그래머는 보안에 대해 무엇을 알아야합니까? [닫은]

저는 IT 학생이며 현재 대학교 3 학년입니다. 지금까지 우리는 일반적인 컴퓨터 (프로그래밍, 알고리즘, 컴퓨터 아키텍처, 수학 등)와 관련된 많은 주제를 연구했습니다.

나는 아무도 보안에 대해 모든 것을 배울 수는 없지만 모든 프로그래머 나 IT 학생이 알아야 할 “최소한”지식이 있고 내 질문은이 최소한의 지식이 무엇인지 확신합니다.

전자 책이나 코스를 제안하거나이 도로를 시작하는 데 도움이 될만한 것이 있습니까?



답변

애플리케이션 보안을 원할 경우 다음 사항을 명심하십시오.

  • 어떤 입력도 믿지 마십시오!
  • 신뢰할 수없는 모든 소스의 입력 확인 -블랙리스트가 아닌 화이트리스트 사용
  • 처음부터 보안을 계획하십시오-결국에는 볼트로 고정 할 수있는 것이 아닙니다
  • 단순성 유지-복잡성으로 인해 보안 허점 가능성 증가
  • 당신의 계속 공격 표면을 최소로
  • 안전하게 실패 했는지 확인하십시오
  • 심층 방어 사용
  • 최소 특권 원칙 준수
  • 위협 모델링 사용
  • 구획화 -시스템이 전부가 아님
  • 비밀을 숨기는 것은 어렵고 코드에 숨겨진 비밀은 오랫동안 비밀로 유지되지 않습니다.
  • 자신의 암호를 작성하지 마십시오
  • 암호화를 사용한다고해서 안전하다는 의미는 아닙니다 (공격자가 약한 링크를 찾습니다)
  • 알고 있어야 버퍼 오버 플로우 와이를 방지하기 위해

응용 프로그램 보안에 관한 온라인 서적과 기사는 다음과 같습니다.

응용 프로그램 보안에 대한 최고의 실무에 대한 개발자 교육

코드 바싱 (유료)

보안 혁신 (유료)

보안 나침반 (유료)

OWASP WebGoat (무료)


답변

프로그래머를위한 보안 규칙 # 1 : 자신을 굴리지 마십시오

보안 전문가 및 / 또는 암호 전문가가 아니라면 항상 잘 설계되고 테스트를 거친 성숙한 보안 플랫폼, 프레임 워크 또는 라이브러리를 사용하여 작업하십시오. 이러한 것들은 전문가와 해커 모두가 생각하고, 패치하고, 업데이트하고, 검사하는 데 몇 년이 걸렸습니다. 휠을 재발 명하여 이러한 이점을 없애고 싶지는 않습니다.

이제는 보안에 대해 배울 필요가 없습니다. 현재하고있는 일을 이해하고 도구를 올바르게 사용하고 있는지 충분히 알아야합니다. 그러나 자체 암호화 알고리즘, 인증 시스템, 입력 소독제 등을 작성하기 시작한 경우 중지하고 한 발 물러나서 규칙 # 1을 기억하십시오.


답변

모든 프로그래머는 익스플로잇 코드를 작성하는 방법을 알고 있어야합니다.

시스템이 어떻게 악용되는지 알지 못하면 실수로 취약점을 막고 있습니다. 패치를 테스트하는 방법을 모른다면 코드 패치 방법을 아는 것은 절대 의미가 없습니다. 보안은 단순한 생각 실험이 아니라 과학적이고 실험을 테스트해야합니다.


답변

보안은 제품이 아닌 프로세스입니다.

많은 사람들이이 명백한 사실을 잊어 버리는 것 같습니다.


답변

CWE / SANS TOP 25 가장 위험한 프로그래밍 오류를 검토하는 것이 좋습니다 . 향후 정기 업데이트를 약속하여 2010 년에 업데이트되었습니다. 2009 개정도 사용할 수 있습니다.

에서 http://cwe.mitre.org/top25/index.html

2010 CWE / SANS Top 25 가장 위험한 프로그래밍 오류는 심각한 소프트웨어 취약점으로 이어질 수있는 가장 광범위하고 중요한 프로그래밍 오류 목록입니다. 그들은 종종 찾기 쉽고 착취하기 쉽습니다. 공격자는 소프트웨어를 완전히 인수하거나 데이터를 훔치거나 소프트웨어가 전혀 작동하지 않도록하기 때문에 위험합니다.

상위 25 개 목록은 교육 및 인식을위한 도구로, 프로그래머가 소프트웨어를 출하하기 전에 발생하는 너무 일반적인 실수를 식별하고 피함으로써 소프트웨어 산업을 괴롭히는 취약점을 예방할 수 있도록 도와줍니다. 소프트웨어 고객은 동일한 목록을 사용하여보다 안전한 소프트웨어를 요청할 수 있습니다. 소프트웨어 보안 연구원은 Top 25를 사용하여 알려진 모든 보안 취약점의 좁지 만 중요한 부분에 집중할 수 있습니다. 마지막으로, 소프트웨어 관리자 및 CIO는 소프트웨어 보안을 유지하기위한 노력의 척도로서 Top 25 목록을 사용할 수 있습니다.


답변

좋은 시작 코스는 컴퓨터 네트워크 및 보안 의 MIT 코스 일 수 있습니다 . 내가 제안 할 한 가지는 프라이버시를 잊지 않는 것입니다. 어떤 의미에서 개인 정보 보호는 실제로 보안의 기초가되며 보안에 대한 기술 과정에서는 다루지 않습니다. 이 과정에서 인터넷과 관련된 윤리 및 법률 에 관한 개인 정보에 대한 자료를 찾을 수 있습니다 .


답변

Mozilla의 웹 보안 팀은 사이트와 서비스 개발시 준수 하는 훌륭한 안내서를 모았습니다 .