저는 IT 학생이며 현재 대학교 3 학년입니다. 지금까지 우리는 일반적인 컴퓨터 (프로그래밍, 알고리즘, 컴퓨터 아키텍처, 수학 등)와 관련된 많은 주제를 연구했습니다.
나는 아무도 보안에 대해 모든 것을 배울 수는 없지만 모든 프로그래머 나 IT 학생이 알아야 할 "최소한"지식이 있고 내 질문은이 최소한의 지식이 무엇인지 확신합니다.
전자 책이나 코스를 제안하거나이 도로를 시작하는 데 도움이 될만한 것이 있습니까?
저는 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 코스 일 수 있습니다 . 내가 제안 할 한 가지는 프라이버시를 잊지 않는 것입니다. 어떤 의미에서 개인 정보 보호는 실제로 보안의 기초가되며 보안에 대한 기술 과정에서는 다루지 않습니다. 이 과정에서 인터넷과 관련된 윤리 및 법률 에 관한 개인 정보에 대한 자료를 찾을 수 있습니다 .
프레임 워크 및 API에서 보안 기본값의 중요성 :
세 A에 대해 알아야합니다. 인증, 권한 부여, 감사 고전적인 실수는 사용자를 인증하는 것이지만 사용자가 일부 작업을 수행 할 권한이 있는지 확인하지 않기 때문에 사용자는 다른 사용자의 개인 사진을 볼 수 있습니다. 더 많은 사람들이 감사에 대해 잊어 버립니다. 보안 시스템에서 누가 언제 무엇을했는지 알 수 있으려면 보안 시스템이 필요합니다.
다음을 추가합니다.
다른 공격 경로의 작동 방식을 이해하십시오.
이 모든 것을 쉽게 구글로 할 수 있습니다. 이것은 당신에게 좋은 기초를 줄 것입니다. 웹앱 취약점을보고 싶다면 작동하는 웹앱 을 악용하는 방법을 보여주는 google gruyere 라는 프로젝트가 있습니다.
기업이나 자체 소프트웨어를 구축 할 때는 해커처럼 생각해야합니다. 해커도 모든 것에 대해 전문가가 아니지만 취약점을 발견하면 모든 정보를 수집하여 파헤 치기 시작합니다. 소프트웨어를 공격하고 공격을 막기 위해 다음과 같은 잘 알려진 규칙을 따라야합니다.
다음 링크에서 더 많은 보안 리소스를 찾을 수 있습니다.
애플리케이션 벤더 보안 플로우에 대한 자세한 정보는 Google에 문의하십시오.
보안에 대한 일반적인 정보는 Bruce Schneier를 읽는 것이 좋습니다 . 그는 웹 사이트, 암호 그램 뉴스 레터 , 여러 권의 책 을 가지고 있으며 많은 인터뷰를했습니다 .
나는 또한 사회 공학 (및 Kevin Mitnick )에 익숙해 질 것 입니다.
현실에서 보안이 어떻게 진행되는지에 대한 좋은 (그리고 꽤 재미있는) 책을 보려면 Cliff Stoll의 'Cuckoo 's Egg' 를 추천합니다.
또한 모든 주요 공격 벡터 / 취약의 분류에 대해서는 OWASP Top 10 List 를 확인하십시오 .
이것들은 읽기에 매혹적입니다. 공격자처럼 생각하는 법을 배우면 자신의 코드를 작성할 때 생각할 내용을 교육 할 수 있습니다.
웹 개발자를 위해 이것을 공유하고 싶었습니다.
보안 가이드 개발자를위한
https://github.com/FallibleInc/security-guide-for-developers