티스토리 뷰

기능적 보안 제어(예: 트랜잭션 제어)

이러한 테스트는 제어가 제자리에 있고, 올바르게 작동하며, 허가되지 않은 동작을 감지하고 예방하는 데 효과적임을 확인하고 검증하기 위해 고안되었다.

 

예 : 은행 창구 직원은 은행장 승인없이 일정 금액의 돈으로 현금 인출을 승인할 수 없습니다.

 

기능 액세스 제어(예: 로그인, 암호, 토큰)

이러한 테스트는 아마도 대부분의 사람들이 보안 테스트 측면에서 즉시 생각하는 것일 것이다. 테스트 포함 :

 

사용자 이름 및 암호 정책이 올바르게 적용됩니다

액세스 제어 수준은 위험에 적합합니다

액세스 컨트롤은 암호 해독 소프트웨어에 내성이 있습니다

 

예제 : 계정 수확은 사용자 이름을 식별하는 관행입니다. 사용자 이름이 추측되거나 식별되면 암호는 시스템 액세스를 얻는 데 필요한 나머지 조각입니다. 일반적인 테스트는 올바른 사용자 이름이 잘못된 암호로 입력되면 오류 메시지가 항목 중 어느 것이 잘못되었는지 표시하지 않는지 확인하는 것입니다.

 

구조 액세스 제어(예: 사용자 액세스 권한, 암호화 수준, 인증)

이러한 제어에 대한 테스트는 데이터 액세스, 기능 액세스 및 개인 정보 보호 수준에 대한 사용자 권한이 어떻게 설정되었는지에 기초합니다. 구조 액세스 컨트롤은 일반적으로 시스템 관리자, 보안 관리자 또는 데이터베이스 관리자가 적용합니다. 경우에 따라 액세스 권한은 응용프로그램의 구성 옵션입니다. 다른 경우에는 시스템 인프라 수준에서 액세스 권한이 적용됩니다.

 

구조 액세스 제어 테스트에는 각 보안 액세스 수준에 대한 테스트 사용자 계정 생성 및 각 액세스 레벨에 대해 제한되는 액세스 권한이 없는지 확인하는 것이 포함됩니다. 예를 들어, 사용자 계정은 최소한의 액세스, 관리자 레벨 액세스 및 관리자 액세스를 위해 작성됩니다. 최소한의 액세스를 가진 사용자가 관리자 수준의 액세스 활동을 수행할 수 없도록 테스트를 수행해야 합니다.

 

안전한 코딩 법칙

이것은 주로 소프트웨어 및 시스템 개발자가 애플리케이션을 만들 때 확립된 보안 방법을 따르고 있는지 여부를 결정하는 정적 테스트 방법입니다.

 

핵심 원칙은 많은 보안 공격이 소프트웨어 결함을 이용하여 시스템이 예상치 못한 방식으로 행동하도록 함으로써 이루어진다는 것이다.

 

보안 코딩 관행은 다음과 같습니다

 

  • 입증된 세션 관리 알고리즘과 컨트롤은 랜덤 세션 식별자를 만드는 데 사용됩니다.
  • 권한 부여 결정은 권한을 제공하는 조직을 통제하는 신뢰할 수 있는 시스템 개체에 의해서만 이루어진다(예: 서버 측에서 권한 부여가 발생해야 한다).
  • 보안 정보는 오류 메시지에 표시되어서는 안 됩니다. 이 정보에는 시스템 세부 정보, 세션 식별자 및 계정 정보가 포함될 수 있습니다.
  • 애플리케이션 오류는 서버 구성에 의존하는 대신 애플리케이션 내에서 처리해야 합니다.
  • HTTP GET 요청은 중요한 정보를 포함해서는 안 됩니다. 오류 처리기는 스택 추적 또는 기타 디버깅 정보를 표시해서는 안 됩니다. 모든 데이터 입력 유효성 검사 오류를 기록해야 합니다.
  • 서버에 일시적으로 저장될 수 있는 중요한 정보는 보호되어야 한다(예: 암호화를 사용해야 한다). 이 임시 보안 정보는 더 이상 필요 없을 때 지워져야 합니다.
  • 응용 프로그램이 운영 체제에 직접 명령을 발급할 수 없어야 합니다. 대신, 내장된 API를 사용하여 운영 체제 작업을 수행해야 합니다.
  • 암호, 연결 문자열 또는 기타 중요한 정보는 명확한 텍스트온 클라이언트 컴퓨터(예: 쿠키)에 저장해서는 안 된다. 이러한 정보를 Adobe 플래시, 컴파일된 코드 및 MS 뷰스테이트와 같은 비보안 형식에 포함시키는 것은 금지되어야 한다.
  • 암호화는 모든 중요한 정보를 전송하는 데 사용되어야 합니다. 전송 계층 보안(TLS)은 HTTP 연결을 사용할 때 전송 중인 데이터를 보호하는 방법이다. 비HTTP 연결의 경우 중요한 정보를 전송하는 데 암호화를 사용해야 합니다. 사용자 제공 데이터는 동적 포함 함수로 직접 전달되어서는 안 된다.
  • 사용자가 제공한 모든 데이터는 응용프로그램에서 사용하기 전에 제대로 소독 및 검증되어야 합니다.
  • 변수는 유형 확인을 지원하는 언어로 강하게 입력해야 합니다. 즉, 변수에는 입력 유형이 정의되어야 합니다. 예를 들어 숫자 필드는 알파 문자를 허용하지 않아야 합니다. 이 제한은 데이터베이스의 변수와 변수의 유형 정의에서 정의됩니다. JavaScript(Node JS) 또는 컴플라이어 강화 유형 검사를 지원하지 않는 다른 언어로 보안 코드를 작성할 수 있다.
  • 일반적인 작업에 새로운 관리되지 않은 코드를 사용하는 대신 구성 관리 중인 테스트, 신뢰 및 승인 코드를 사용합니다.
  • 가능한 권한이 가장 적은 서비스(근본에 없는 서비스)를 실행하고 각 서비스는 운영 체제에 사용자 계정을 소유해야 한다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함