진단 범위와 원칙
저희는 남의 서버로 요청을 보내는 서비스입니다. 그래서 무엇을 하고 무엇을 하지 않는지 전부 공개합니다. 이 문서는 이용약관의 일부입니다.
목차8절
원칙 1. 읽기만 합니다
진단에 사용하는 요청은 GET과 HEAD뿐입니다. 데이터를 추가·수정·삭제하는 요청(POST·PUT·PATCH·DELETE)은 어떤 경우에도 보내지 않습니다. 이 제약은 코드에 강제되어 있습니다. 요청 함수 자체가 GET·HEAD만 받습니다.
원칙 2. 브라우저가 하는 것과 같은 것만 합니다
실제로 하는 일은 다음입니다.
- ·입력한 주소의 페이지를 엽니다.
- ·그 페이지가 브라우저로 내려보내는 JavaScript 파일을 내려받아 읽습니다. (브라우저가 하는 것과 동일)
- ·그 코드 안에 적혀 있는 API 주소를, 로그인하지 않은 상태로 불러봅니다.
- ·관리자 주소로 흔히 쓰이는 경로 9개를 눌러봅니다. (/admin 등, 고정 목록입니다)
- ·코드에 공개 키가 들어 있는 경우, 그 키로 데이터 건수만 확인합니다.
- ·이용약관·개인정보처리방침·환불정책 페이지가 있는지, 사업자 정보가 표시되어 있는지 확인합니다.
원칙 3. 하지 않는 것
- ·비밀번호를 추측하거나 로그인을 시도하지 않습니다.
- ·존재하지 않는 주소를 무작위로 대량 시도하지 않습니다(퍼징). 코드에 실제로 적혀 있는 주소와 고정된 목록만 사용합니다.
- ·취약점을 실제로 악용하지 않습니다. 데이터를 빼내거나 바꾸지 않습니다.
- ·SQL 인젝션·XSS 같은 공격 문자열을 보내지 않습니다.
- ·부하를 주지 않습니다. 요청 사이에 간격을 두고, 한 번의 진단에서 보내는 요청은 60건 이하입니다.
원칙 4. 남의 데이터를 저장하지 않습니다
- ·데이터베이스가 열려 있는지 확인할 때 HEAD 요청을 씁니다. HEAD에는 응답 본문이 없습니다. 즉 회원 데이터를 한 줄도 받지 않고, 응답 헤더의 건수만 읽습니다.
- ·저장하는 것: 건수, 응답 크기, 칼럼 이름.
- ·저장하지 않는 것: 데이터의 실제 값.
- ·발견한 키는 앞 8자만 남기고 가려서 기록합니다. 전체 값은 저장하지 않습니다.
원칙 5. 확인된 것만 말합니다
진단 결과의 표시는 세 종류뿐입니다.
- ·확인됨: 저희가 실제로 요청을 보내 관찰한 사실. 요청과 응답을 증거로 함께 보여드립니다.
- ·코드를 봐야 압니다: 외부에서 판정이 불가능한 항목. 위험하다고 단정하지 않습니다.
- ·이상 없음: 확인해봤고 문제가 관찰되지 않은 항목. 안전 보증이 아닙니다.
“~인 것 같습니다”라는 표현을 쓰지 않습니다. 추측을 결과로 내놓지 않기 위해서입니다.
원칙 6. 소유자 확인
진단 결과의 증거(구체적인 요청과 응답)는 이 사이트의 소유자임을 확인하는 체크박스에 동의하신 뒤에 제공합니다. 이 확인은 화면 장식이 아니라 서버에서 실제로 검사하는 조건입니다.
권한 없는 제3자의 사이트를 진단하는 데 이 도구가 쓰이는 것을 원하지 않습니다. 그런 요청이 확인되면 차단합니다.
원칙 7. 오탐은 버그로 취급합니다
판정이 틀렸다면 알려주십시오. 확인해서 정정하고, 같은 오탐이 다시 나지 않도록 룰을 고칩니다. 확인되지 않은 것을 위험하다고 말하는 것이 이 제품에서 가장 큰 결함입니다.
진단 요청을 거부하는 경우
- ·내부망 주소(localhost, 사설 IP, 클라우드 메타데이터 주소 등): 서버 내부를 들여다보는 데 악용될 수 있어 차단합니다.
- ·http·https 이외의 주소
- ·같은 곳에서 시간당 10건을 넘는 요청