it-swarm-korea.com

오류 로그에는 어떤 정보가 기록되어야합니까?

오류가 발생하는 경우 유용한 정보로 오류 로그를 채우고 싶습니다. 로그를 사용하여 내 사이트의 버그를 찾아 내고 수정할 수있을뿐만 아니라 잠재적으로 해킹 시도를 기록하고 싶습니다. PHP 웹 앱의 경우 어떤 정보가 중요하며 그 이유는 무엇입니까? 어떤 정보가 유용 할 수 있습니까? 과잉이란 무엇입니까?

내 현재 목록은 다음과 같습니다.

  • 오류 유형입니다.
  • 해당 오류 메시지입니다.
  • 오류가 발생한 URL입니다.
  • 타임 스탬프.
  • 사용자의 IP 및 사용자 에이전트입니다.
  • 참조 URL입니다.
10
VirtuosiMedia

일반적으로 기록하는 양은 오류의 종류에 따라 다릅니다. 중요할수록 더 많이 기록합니다.

기록하고 싶은 다른 항목과 관련하여

  • 오류를 일으킨 파일의 파일 이름은 줄 번호와 함께 목록에서 가장 높습니다.
  • 오류가 발생한 예외의 결과 인 경우 스택 추적 정보입니다.

유용하다면 오류가 발생했을 때 기록하는 양을 과도하게 처리 할 수 ​​없다고 생각합니다. 로그가 정말 나빠지는 것을 본 것은 오류가 발생하지 않는데도 방대한 로그를 취하는 경우뿐입니다.

더 많은 정보는 OWASP 웹 사이트-오류 처리 및 로깅 에서 찾을 수 있습니다.

4
Mark Davidson

Exception shielding 패턴을 사용하고 있습니다.

우선 : 응용 프로그램은 (개발자로서) 필요한 모든 정보를 데이터베이스, 파일에 기록합니다.

Second : 애플리케이션이 민감한 내부 정보를 포함하지 않는 메시지를 클라이언트에 반환합니다.

애플리케이션이 수집 할 수있는 개인 정보 (차폐) :

  • 클라이언트 환경 변수 (url, ip, language ...)
  • 오류 장소 : 스택
  • 내 비즈니스 변수 (사용자 지정 오류 처리)

처리되지 않은 예외 및 사용자 지정 처리 항목을 분리하기로 결정했으며 모든 유형의 예외에 대한 로깅 템플릿이 있습니다.

3
garik

Mark와 igor는 좋은 제안을합니다. 또한 오류 처리 및 로깅에 대해 OWASP에 대한 읽기를 조언합니다.

한 가지 더, 무엇을 기록하든 URL 리퍼러, get/post 변수, 사용자 이름 등과 같이 사용자가 기록한 정보를 삭제해야합니다. 즉, 원격 사용자가 조작 할 수있는 모든 것입니다. 100,000 자 길이의 사용자 이름을 기록하고 싶지 않을 것입니다.

1
Alexandru Luchian

언급하신 내용 외에도 POST 값 ($ _POST) 및 쿠키/세션 데이터가있는 경우 포함)을 포함하려고합니다.

1
Olivier Lalonde