it-swarm-korea.com

새로운 웹 애플리케이션에 대한 가장 중요한 보안 검사는 무엇입니까?

새 웹 앱을 시작하기 위해 수행해야하는 최우선 보안 검사가 무엇인지 궁금합니다.

나는 무차별 대입 취약점과 교차 사이트 스크립팅을 추측하고 있습니다. 시간이 없어도 확인해야 할 다른 것 은 무엇입니까 ?

16
Andreas Arnold

OWASP는 소위 Top Ten Project 로 가장 인기있는 취약점이 무엇인지 보여줍니다. 그러나 거기에 나열된 수표에만 제한해서는 안됩니다. 나는 그것이 어떻게 들리는 지 결코 좋아하지 않았다 – "상위 10 가지 취약점을 보여줘". 매우 유사한 대답이 여기에 있습니다 . http://questions.securitytube.net/questions/1764/top-3-c-security-concerns , 철학의 의미입니다. 첫 번째 단락은 내 의견을 완전히 표현합니다. 인용하겠습니다.

보안 코드를 작성하려는 경우 "10 대 취약점"과 같은 질문을 피하는 것이 좋습니다. C/C++에 대한 지식이 약하고 C/C++에 대한 지식이 약한 경우 typecasting, integer overflow, off-by-one, stack overflow 등의 버그를 도입 할 수있는 유사한 기회가 있기 때문에 원하는 종류의 버그에만 초점을 맞출 필요가 없습니다. 프로그래밍 경험이 적습니다.

14
anonymous

SQL 주입은 어떤 종류의 데이터베이스 상호 작용이있는 경우 큰 문제이며 상대적으로 테스트하기 쉽습니다. CSRF (Cross-Site Request Forgery)는 내가 빼놓을 수없는 또 다른 하나입니다. 특히 모든 종류의 사용자 업로드 또는 다운로드를 지원하는 경우 파일 정규화 공격을 확인하는 것도 좋은 생각입니다.

나머지는 실제로 앱, 포함 된 데이터 유형 및 사용자에 따라 다릅니다.

5
Wally Lawless

제 시간에 정말 비판적 이었다면 신청서에 다음 사항이 있는지 확인합니다.

  • 입력 위생! 기본 시스템에서 사용하기 전에 데이터를 정리할 수있는 좋은 라이브러리를 찾으십시오. XML-, SQL-, Html-, Command-injections는 매우 위험합니다!
  • CSRF
  • 업로드 가능성은 경로 순회를 허용하지 않고 서버에서 구문 분석하는 악성 스크립트를 업로드하는 데 초점을 맞출 필요가 있습니다.

나는 "무력한 강제력"능력을 돌볼 것입니다. 물론 사용자는 강력한 암호가 필요하며 디렉토리 구조와 파일은 항상 무차별 대입 될 수 있습니다. 모호성에 의한 보안은 단독으로 작동하지 않습니다. :)

3
Chris Dale

Ams가 옳다고 생각하지만 가장 큰 노출 측면에서 통계를 살펴볼 가치가 있습니다. Verizon 데이터 침해 보고서 확인 , Krebs Java 보안 보고서 및 일부의 경우 WHID 보안 보고서 인터넷에서 실제로 일어나고있는 공격에 대한 훌륭한 정보 소스.

3
Rory Alsop

가장 중요한 위협은 데이터베이스와 같이 백엔드에 액세스하려는 위협입니다. SQL 삽입은 목록의 맨 위에 있습니다. 해야 할 검사는 사용자 입력이 동적 쿼리의 문자열에 직접 입력되지 않았는지 확인하는 것입니다. 사용자 입력은 클라이언트에서 오는 모든 것입니다. 사용자가 양식이나 브라우저에서 편집 할 수 없더라도 브라우저에서 나가는 트래픽을 가로 채서 어떤 필드 에든 삽입 할 수 있다고 상상해보십시오. 따라서 항상 명심하십시오 : "클라이언트로부터 오는 입력을 신뢰하지 마십시오".

따라서 사용자 입력을 신뢰하지 않음으로써 이제 모든 입력을 검증해야합니다. SQL 인젝션의 경우 허용되지 않는 문자를 스크랩해야합니다. 예를 들어, 사용자가 숫자를 검색한다고 가정하면 특정 길이에 0-9의 조합을 제외하고는 아무것도 허용하지 않습니다. 나머지를 제거한 다음 쿼리에 입력하십시오. 동적 쿼리를 모두 피하고 데이터베이스에서 매개 변수가있는 쿼리와 저장 프로 시저를 사용하는 것이 좋습니다.

다음 주요 공격은 다른 사용자를 표적으로 삼을 수있는 주입입니다. XSS처럼. XSS를 사용한 이야기는 SQL 주입과 유사하므로 사용자 입력을 신뢰해서는 안되며 입력을 받으면 화이트리스트 유효성 검사를 수행해야합니다. 일반적으로 클라이언트 측은 사용자가 데이터를 입력 한 형식이 충분하지 않은지 확인하고 모든 것을 서버 측에서 다시 확인해야합니다.

인증 부분에 각별한주의를 기울여야합니다. 사용자 이름과 암호 입력은 쉬운 기능처럼 보입니다. 그렇지 않습니다. 로그인에 성공하면 새 세션 값이 생성되고 클라이언트의 쿠키에 설정되었는지 확인해야합니다. 또한 사용자가 로그인 한 나머지 시간 동안이 세션이 HTTP를 통해 노출되지 않는지 확인해야합니다. 즉, SSL을 사용해야합니다. 세션은 무작위적이고 충분히 길며 추측 할 수 없어야합니다. 대부분의 프로그래밍 언어가이를 처리 할 수 ​​있습니다. 바퀴를 재발 명하지 마십시오. 세션에 Secure 및 HTTPOnly 플래그가 설정되어 있는지 확인하십시오. 유휴 시간 또는 수동 로그 아웃 후에 만료되는지 확인하십시오. 암호 재설정 및 변경도 매우 민감한 기능입니다. 토론하려면 긴 게시물이 필요합니다.

매우 중요한 부분은 승인입니다. 사용자가 인증을 받았다고해서 완료되었다는 의미는 아닙니다. 각 사용자는 특정 페이지 또는 데이터에만 액세스해야합니다. 따라서 모든 요청은 권한 상승을 방지하기 위해 서버 측에서 확인되어야합니다.

1
Goli E