이 문서는 여러 언어로 게시됩니다. 언어별 버전 간에 차이가 있는 경우 폴란드어 버전이 구속력을 가집니다.
버전 1.1 · 최종 업데이트: 2026년 10월 22일
LW IT Solutions Company Lukas Wójcik, al. Tadeusza Kościuszki 80/82, lok. 301, 90-437 Łódź, Poland가 formexposed 서비스를 보호하기 위해 취하는 GDPR 제32조에 따른 조치입니다. 이 페이지는 부속서 2로서 데이터 처리 계약의 일부를 구성합니다.
1. 범위 및 원칙
이 조치는 서비스가 처리하는 모든 데이터에 적용됩니다. 즉 당사가 고객을 대신하여 처리하는 데이터(데이터 처리 계약에 설명됨)와 고객 계정 및 로그처럼 당사가 직접 컨트롤러인 데이터 모두에 적용됩니다. 두 데이터에 대해 별도의 보호 수준은 없으며, 계정을 보호하는 조치가 프로세서 데이터도 보호합니다.
GDPR 제32조(1)에 따른 구성. 가명처리 및 암호화((a)호)는 4절에서, 시스템의 지속적인 기밀성, 무결성, 가용성 및 복원력((b)호)은 3절, 5절, 6절 및 7절에서, 사고 발생 후 적시에 가용성을 회복하는 능력((c)호)은 7.1절에서, 효과를 정기적으로 테스트, 평가 및 검증하는 절차((d)호)는 9절에서 다룹니다. 당사는 최신 기술 수준과 구현 비용을 고려하여 데이터 보호 영향 평가에 설명된 위험을 바탕으로 조치를 선정했습니다.
원칙: 의도가 아니라 실측. 코드나 운영에서 실제로 구현된 것만 여기에 기재합니다. 계획되었으나 아직 구현되지 않은 것은 10절에 명시적으로 “계획됨”으로 기재합니다. 여기에 없는 조치가 암묵적으로 시행되고 있는 것은 아닙니다.
장비 이름, 내부 주소, 포트, 사용자 이름 및 소프트웨어 버전은 의도적으로 기재하지 않습니다. 이러한 정보는 조치를 평가하는 데는 도움이 되지 않지만, 조치를 우회하려는 사람에게는 도움이 됩니다. 데이터 처리 계약에 따른 감사를 위해 이 정보가 필요한 경우, 감사에 필요한 범위에서 비밀유지 조건하에 감사 과정에서 제공받게 됩니다.
2. 서비스의 구조
서비스는 동일한 내부 네트워크에 위치한, 폴란드에 있는 제공자 소유의 서버 두 대에서 운영됩니다.
- 데이터베이스가 있는 웹 서버. 애플리케이션을 제공하고, 데이터베이스를 보유하며, 알림을 보내고, 데이터를 백업합니다. 이 서버만 인터넷으로부터 요청을 받도록 설정되어 있습니다.
- 스캔 서버. 브라우저에서 제3자 웹사이트와 자체 웹사이트를 점검하고, 개별 양식을 분류하고, 유료 계정을 위해 점검의 발견 사항을 우선순위에 따른 실행 계획으로 요약하며, “Fix it for me”에서 코드를 추가하는 언어 모델을 실행합니다. 인터넷으로부터 요청을 받도록 설정되어 있지 않으며, 웹 서버에서 직접 작업을 가져오고 결과를 그곳으로 반환합니다.
운영에는 호스팅, 데이터 센터 또는 클라우드 제공자가 관여하지 않으며, 외부 AI 서비스로 아무것도 전송되지 않습니다. 어떤 제3자가 데이터를 받는지는 하위 프로세서 페이지에 명시되어 있습니다.
3. 기밀성
3.1 물리적 출입 통제
서버는 폴란드에 있는 제공자의 비공개 장소에 있습니다. 소유자만 출입할 수 있습니다(운영자 진술 기준). 장소의 정확한 주소는 의도적으로 여기에 기재하지 않습니다.
3.2 접근 통제: 서비스 로그인
- 비밀번호는 PHP의 표준 방식(bcrypt)을 이용한 해시로만 저장됩니다. 표준 방식이 바뀌면 다음 로그인 시 해시가 갱신됩니다. 알 수 없는 주소로 로그인을 시도하는 경우에도 서버는 해시를 계산하므로, 응답 시간으로 계정 존재 여부가 드러나지 않습니다. 마찬가지로 비밀번호 재설정 요청에 대한 응답도 그 문구나 소요 시간으로 계정 존재 여부를 드러내지 않으며, 재설정 이메일은 같은 주소로 시간당 최대 3회까지만 발송됩니다. 새 비밀번호는 최소 10자 이상이어야 하며, bcrypt가 그 이상의 바이트를 고려하지 않으므로 72바이트(UTF-8)를 넘을 수 없습니다. 비밀번호를 변경하면 다른 모든 기기에서 로그아웃되며, 링크를 통해 재설정하면 모든 기기에서 로그아웃되고 링크는 한 번만 유효합니다.
- 실패 시도 후 잠금. 로그인 실패는 IP 주소별로 집계되며, 짧은 시간에 너무 많이 실패하면(현재 15분에 8회) 해당 주소에서의 로그인이 일시적으로 차단됩니다. 로그인에 성공하면 이 카운터가 초기화됩니다. 시도 기록은 7일 후 삭제됩니다. 또한 모든 비밀번호 확인 전에 성공한 시도를 포함하여 계정별(알 수 없는 주소의 경우 입력된 주소별) 및 IP 주소별로 시도 1회가 집계됩니다. 현재 동일 IP 주소에서 계정당 최대 8회, IP 주소당 15분에 80회이며, 분산된 추측 공격에 대비하여 모든 주소를 합산한 계정별 한도는 이보다 상당히 높게 적용됩니다. 따라서 다른 주소에서의 실패 시도로 소유자가 계정에서 잠기는 일은 더 이상 없습니다. 이 카운터에는 HMAC 키만 포함되며 평문 이메일이나 IP 주소는 포함되지 않고, 해당 시간 창이 끝나면 만료됩니다. 카운터 저장소를 사용할 수 없는 경우 로그인은 허용되지 않고 거부됩니다. 비밀번호 또는 주소 변경, 2차 인증 켜기/끄기, 워크스페이스 이전, 데이터 내보내기 및 계정 삭제 전의 비밀번호 확인(계정당 15분에 5회), 회원가입(IP 주소당 시간당 10회), 고객 포털 비밀번호(포털 및 IP 주소당 10회, 포털당 15분에 50회)에도 같은 종류의 한도가 적용됩니다.
- 2차 인증. 모든 계정은 RFC 6238(TOTP)에 따른 일회용 코드 로그인을 활성화할 수 있습니다. 이를 위한 비밀 값은 데이터베이스에 암호화되어 저장되며, 키는 데이터베이스에 저장되지 않으므로 데이터베이스 추출본만으로는 충분하지 않습니다. 한 번 승인된 코드는 다시 유효하지 않습니다. 복구 코드 10개는 해시로만 저장됩니다. 일회용 코드와 복구 코드는 설정 중을 포함하여 계정당 15분에 10회 시도로 제한됩니다.
- 관리 영역은 2차 인증 필수. 운영자의 관리 영역은 2차 인증이 활성화된 계정에만 열립니다. 설정 체크리스트는 2차 인증이 없는 모든 관리자 계정을 보고합니다.
- 세션. 세션 쿠키는 스크립트가 읽을 수 없고(HttpOnly), HTTPS로만 전송되며(Secure), 무언가를 변경할 수 있는 제3자 사이트의 요청에는 전송되지 않습니다(SameSite=Lax). 로그인 시 새 세션 ID가 생성되므로 사전에 심어진 ID는 더 이상 유효하지 않으며, 서버는 직접 발급하지 않은 세션 ID를 받아들이지 않습니다. 모든 계정은 로그인된 기기를 확인하고 개별적으로 로그아웃시킬 수 있습니다.
- “로그인 상태 유지”는 선택 사항이며 30일간 유효하지만, 관리 권한이 있는 계정에는 적용되지 않습니다. 이러한 계정은 항상 비밀번호와 2차 인증으로 로그인합니다. 토큰은 두 부분으로 구성되며, 검증하는 부분은 데이터베이스에 해시로만 저장됩니다. 사용할 때마다 새 토큰으로 교체되며, 동시 요청이 있어도 각 토큰은 한 번만 유효하므로 도난당한 토큰은 늦어도 다음 정상 방문 시 발견됩니다.
- 이메일 내 링크. 주소 확인 및 비밀번호 재설정 링크는 데이터베이스에 해시로만 저장됩니다. 재설정 링크는 1시간, 회원가입 확인 링크는 72시간, 변경된 주소 확인 링크는 24시간 동안 유효합니다. 이메일 주소가 변경되면 미사용 재설정 링크는 무효가 됩니다.
- 인터페이스. API 키, 확장의 연결 코드 및 배포 코드는 해시로만 저장됩니다. API 키는 분당 제한된 횟수만 사용할 수 있으며, 확장의 연결 코드는 15분간 한 번만 유효합니다.
- 공개 양식(회원가입, 로그인, 비밀번호, 점검, 헤더 도구, 옵트아웃, 지원 및 문의)의 봇 보호: 제출 시에만 로드되는 Google reCAPTCHA. 정확히 해당 양식의 동작에 대해 충분한 점수를 받은 Google의 유효한 응답만 승인되며, Google이 3초 이내에 응답하지 않으면 제출이 거부됩니다. 자세한 내용은 개인정보 처리방침에 있습니다.
3.3 접근 통제: 서버 관리
- 인터넷에서 접근 가능한 서버는 패킷 필터를 사용하여 제공하는 서비스만 허용하며, 서버 관리 로그인에 반복적으로 실패한 주소를 자동으로 차단합니다.
- 서버 간 자동화된 프로세스는 권한이 엄격히 제한된 자체 키를 사용합니다. 웹 서버가 스캐너의 새 버전을 배포하는 데 사용하는 키는 스캔 서버에서 고정된 명령 목록만 실행할 수 있으며 스캐너 디렉터리에 쓰기 전용으로만 복사할 수 있습니다. 이 키로는 대화형 로그인이 불가능하며, 거부된 모든 명령은 기록됩니다. 마찬가지로 스캔 서버는 웹 서버의 특정 디렉터리에만 스크린샷을 쓸 수 있습니다.
- 웹사이트를 제공하는 프로세스는 운영 설치본에 대한 쓰기 권한도, 스캔 서버용 키도 갖고 있지 않습니다. 관리 영역에서 실행한 배포는 작업을 등록할 뿐이며, 별도의 실행 작업이 이를 수행합니다.
- 데이터베이스 자격 증명과 키 같은 비밀 정보는 제공되는 디렉터리 밖의 설정 파일에 보관되며 배포 시 함께 복사되지 않습니다. 웹 서버 설정은 웹 인터페이스를 통해 배포되지 않습니다.
3.4 권한 통제: 서비스 내 권한
- 역할. 각 워크스페이스에는 소유자, 관리자, 열람자 역할이 있습니다. 변경, 삭제, 초대 및 로그인 정보 저장은 소유자와 관리자만 할 수 있으며, 역할 변경과 구성원 제거는 소유자만 할 수 있습니다. 초대는 초대를 보낸 사람이 여전히 소유자 또는 관리자인 동안에만 유효합니다. 열람자에게는 웹훅과 채팅 채널의 주소가 호스트까지만 축약되어 표시됩니다. 주소만 알아도 채널에 게시할 수 있기 때문입니다. 확인은 인터페이스에서만이 아니라 서버에서 이루어집니다.
- 워크스페이스에 대한 결합. 도메인과 설정은 워크스페이스 구성원만 접근할 수 있습니다. 점검마다 서비스는 추측할 수 없는 무작위 링크로 보고서를 생성하며, 이 링크를 통해 로그인 없이 점검 결과와 스크린샷에 접근할 수 있습니다. 스크린샷은 해당 보고서의 링크와 함께여야만 접근할 수 있습니다. 링크는 계정과 알림에 표시되며, 링크를 전달하는 사람은 보고서를 전달하는 것입니다.
- 상태를 변경하는 요청에는 세션별 보안 토큰(CSRF 보호)이 필요하며, 이 토큰은 상수 시간으로 비교됩니다.
- “고객으로 보기”. 지원을 위해 운영자는 고객이 보는 것처럼 애플리케이션을 볼 수 있습니다. 이 보기는 1시간 후 종료되며, 비밀번호, 주소, 2차 인증, 기기, 구독, 내보내기 및 삭제의 변경을 차단하고, 그동안 관리 영역을 닫으며, 기록됩니다. 보기를 종료하면 운영자는 완전히 로그아웃되며, 비밀번호와 2차 인증으로 다시 로그인해야만 관리 영역으로 돌아갈 수 있습니다. 고객은 데이터 내보내기에서 이를 확인할 수 있습니다.
- 관리. 명시적으로 승인된 소수의 계정만 관리 권한을 가지며, 관리 측에서 2차 인증을 재설정할 때마다 기록됩니다.
3.5 분리 통제
- 고객의 데이터는 워크스페이스별로 논리적으로 분리됩니다. 로그인 영역의 모든 읽기 및 쓰기 경로에는 이 결합이 함께 적용되며, 보고서는 추가로 그 링크를 통해 접근할 수 있습니다(3.4절).
- 개발과 운영은 별도의 데이터베이스와 별도의 데이터베이스 사용자를 갖춘 별도의 설치본에서 실행됩니다. 개발 사용자는 운영 데이터베이스에 접근할 수 없습니다. 실제 고객 데이터는 개발 환경으로 복사되지 않으며, 그곳에서는 생성된 샘플 데이터로 작업합니다.
- 스캐너는 환경마다 작업에 필요한 데이터에 대한 권한만 가진 자체 자격 증명을 사용합니다. 스캐너는 계정, 요금 청구 또는 로그를 읽을 수 없습니다.
- 웹 서버에서는 같은 제공자의 다른 서비스도 실행됩니다. 이들은 이 서비스의 데이터에 접근할 수 없는 자체 데이터베이스와 자체 데이터베이스 사용자를 가지고 있습니다.
4. 암호화, 가명처리 및 데이터 최소화
4.1 로그인 후 스캔을 위한 로그인 정보
이 기능을 위해 고객은 테스트 계정의 사용자 이름과 비밀번호를 저장합니다. 이는 서비스에서 가장 민감한 데이터이므로 다른 모든 데이터와 다르게 보호됩니다.
- 저장 시 웹 서버는 스캔 서버의 공개 키로 이를 암호화합니다(ECIES: 기록마다 일회용 키를 사용하는 X25519, HKDF-SHA256, AES-256-GCM). 개인 키는 스캔 서버에만 존재합니다. 웹 서버, 데이터베이스 및 백업에는 암호문만 있으며, 당사도 그곳에서 이를 읽을 수 없습니다.
- 각 기록은 암호학적으로 해당 도메인에 결합됩니다. 다른 도메인으로 옮기면 복호화에 실패합니다.
- 스캔 시 암호문은 작업에 첨부됩니다. 스캔 서버는 이를 복호화하여 표준 입력을 통해서만 점검 컨테이너에 로그인 정보를 전달하며, 프로세스 목록에 보이는 명령줄 인수로는 절대 전달하지 않습니다. 스캔 서버가 읽는 즉시 암호문은 작업에서 삭제되며, 남은 잔여물은 실행 작업이 늦어도 1시간 후 정리합니다.
- 로그인 정보는 절대 표시되지 않고, 기록되지 않으며, API를 통해 출력되지 않고, 내보내지지 않습니다. 인터페이스에는 사용자 이름의 첫 글자와 길이만 표시됩니다. 제거하면 암호문을 덮어씁니다.
- 로그인 뒤에서 스캐너는 읽기만 합니다. 제출, 능동적 테스트, 스크린샷이 없으며, 로그아웃, 삭제 또는 해지 페이지는 방문하지 않습니다.
4.2 추가 암호화 및 해시
- 비밀번호, 복구 코드, 고객 포털 비밀번호, API 키, 연결 및 배포 코드, “로그인 상태 유지” 토큰, 기기 목록의 세션 ID, 확인 및 재설정 링크는 해시로만 저장됩니다.
- 2차 인증용 비밀 값은 암호화되어 저장됩니다(3.2절).
- 당사는 저장 상태의 데이터베이스 전체 암호화를 주장하지 않습니다. 민감한 값은 위에 설명한 대로 개별적으로 보호됩니다.
4.3 설계에 의한 데이터 최소화
- 전달 확인: 헤더와 텍스트의 처음 최대 8 KB만 읽습니다. 데이터베이스에는 시간, 연결 정보, 해당하는 경우 테스트 제출 ID 및 진위 확인 결과(SPF, DKIM, DMARC)만 저장하고 내용이나 전체 발신 주소는 절대 저장하지 않습니다. 최신 이메일의 진위 결과는 도메인에 보관하고 다음 결과로 덮어씁니다. 발신 메일 서버의 IP 주소와 발신자 이메일 도메인이 포함됩니다. 처리 성공 후 메일함에서 이메일을 삭제하며 가져오기나 삭제가 실패하면 다음 성공적인 실행에서 삭제합니다.
- 점검: 양식 구조의 필드 이름, 유형과 레이블, 필수 및 표시 속성을 저장하며 값은 저장하지 않습니다. 스캐너는 미리 채워진 숨겨진 필드의 앞부분(최대 24자)과 데이터 속성의 앞부분(최대 60자)을 점검 중에만 읽고 저장하지 않습니다. 전체 점검의 스크린샷은 정보를 가리지 않으며 브라우저 점검에서만 입력 필드를 가립니다. 양식 수신자 주소는 도메인으로만 저장합니다. 능동적 테스트 제출에는 개인정보 없는 표시된 테스트 문구만 포함합니다.
- WordPress 및 TYPO3 확장 기능은 플러그인 목록 같은 일일 통계와 특성만 전송하며 연결된 WordPress 플러그인은 기본 활성화된 군집 보호를 위해 차단된 메시지의 링크 도메인도 전송합니다. 그 밖의 내용, 방문자의 이름, 주소 또는 IP 주소는 전송하지 않습니다. 선택적 양식 및 필드 오류 통계는 기본적으로 꺼져 있습니다.
- “Fix it for me”: 붙여넣은 코드는 요청 기간 동안만 처리하며 저장하지 않습니다.
- 배지: 고객 웹사이트의 배지 이미지는 쿠키를 설정하거나 세션을 시작하지 않습니다.
- 운영자의 휴대폰으로 보내는 운영 알림은 변수가 없는 고정 텍스트로 이름, 주소 또는 내용을 포함하지 않습니다. 운영자에게 보내는 오류 이메일에는 정제하지 않고 400자로 자른 오류 메시지 원문이 포함되며 개별 사례에서는 주소나 링크가 있을 수 있습니다.
- 군집 보호: 고객 확장 기능 간에는 차단된 스팸 내 링크 도메인만 공유하며 IP 네트워크 교환은 꺼져 있습니다.
- 위치: IP 주소의 국가는 로컬 데이터베이스 파일에서 확인하며 위치정보 서비스에 주소를 보내지 않습니다.
5. 스캐너 악용 방지
스캐너는 실제 브라우저로 타사 페이지를 로드합니다. 보호하지 않으면 외부인이 당사 내부 네트워크나 비공개 대상에 접근하는 도구가 될 수 있습니다(서버 측 요청 위조). 따라서 독립된 두 계층을 두고 각 실행을 격리합니다.
5.1 격리된 실행
- 각 점검은 자체 컨테이너에서 실행되며 종료 후 제거됩니다. 관리자 권한, 추가 운영체제 기능 또는 권한 상승 가능성 없이 실행됩니다. 파일 시스템은 작은 휘발성 영역을 제외하고 읽기 전용입니다.
- 메모리, 프로세스 수 및 실행 시간이 제한되며 시간을 초과하면 종료합니다.
5.2 네트워크: 두 계층
- 첫 번째 계층, 스캐너 내부: 스캔 전 및 이후 브라우저의 모든 개별 요청에 대해 리디렉션과 삽입 콘텐츠를 포함하여 주소가 어디로 해석되는지 확인합니다. 사설, 로컬, 예약 및 문서용 네트워크(IPv4 및 IPv6)와 통상 웹 포트 외의 포트를 거부합니다. 브라우저는 서비스 워커를 허용하지 않고 WebSocket 연결을 닫습니다. 둘 다 검사를 우회할 수 있기 때문입니다.
- 두 번째 계층, 네트워크 내부: 컨테이너는 자체 네트워크에서 실행됩니다. 방화벽 규칙은 인터넷으로의 연결을 웹 포트로만 허용하고 웹 서버와 데이터베이스가 있는 당사 내부 네트워크를 포함한 사설 네트워크 연결을 차단합니다. 점검 실행 자체에 필요한 예외는 필요한 범위로 제한하고 내부 문서에 명시합니다. 첫 검사 이후에만 이름이 다르게 해석되는 경우에도 이 계층이 적용됩니다.
5.3 웹 서버의 요청
도메인 관리 권한 증명, 헤더 도구, 노출 파일 검색, 펄스 요청, RDAP 조회 및 인증서 확인, webhook과 채팅 알림, 선택적 두 번째 점검 위치를 위해 웹 서버가 직접 타사 주소를 요청하는 경우에도 같은 규칙을 적용합니다. 통상 웹 포트에서 웹 프로토콜만 사용하고(webhook과 채팅 알림은 표준 포트의 HTTPS만), 공개 주소만 허용하며 이름이 나중에 내부 대상으로 바뀌지 않도록 사전 확인한 정확한 주소에만 연결합니다. 리디렉션은 전혀 따르지 않거나 수동으로만 따르며 매번 다시 검사하고 시간 제한을 짧게 둡니다. 도메인 관리 권한 증명, 펄스 요청 및 브라우저 점검의 두 번째 위치에는 응답 크기도 제한합니다.
5.4 타사 사이트에서 하지 않는 일
- 고객에 대한 능동적 테스트 제출(점검당 최대 다섯 건)은 관리 권한 증명이 제공된 도메인(DNS, 메타 태그, 파일 또는 확장 기능)에만 수행합니다. 유일한 예외는 당사 자체 테스트 및 데모 도메인의 내부 점검입니다. 관리 권한이 증명된 도메인의 호스트 이름은 변경할 수 없어 증명이 다른 호스트로 이전되지 않습니다. 그 밖에는 방문자처럼 페이지를 읽는 수동적 점검만 합니다.
- 브라우저 점검은 제출 직전까지 진행하며 주문, 결제 또는 제출을 실행하지 않습니다.
- 옵트아웃 목록의 도메인은 점검하지 않으며 진행 중인 모니터링은 다음 예약 점검 시 끝납니다.
6. 무결성: 전송 및 입력
6.1 전송
- 애플리케이션은 인터넷에서 HTTPS로만 접근할 수 있습니다. 브라우저는 일 년 동안 HTTPS만 사용하도록 지시받습니다(HSTS). 인증서는 자동 갱신됩니다.
- 추가 헤더는 타사 페이지에 애플리케이션을 삽입하거나 파일 유형을 추측하거나 타사 대상으로 양식을 제출하는 것을 제한합니다. 콘텐츠 보안 정책은 각 응답에서 서버가 허용한 스크립트만 애플리케이션에서 실행하게 하며 최신 브라우저는 HTML에 삽입된 스크립트나 이벤트 처리기를 실행하지 않습니다.
- 전달 확인 메일함은 인증서를 검증하는 암호화된 연결로 가져옵니다.
- Webhook은 고객의 비밀 값으로 서명할 수 있어(타임스탬프를 포함한 HMAC-SHA256) 수신자가 출처와 무결성을 검증할 수 있습니다. 선택적 두 번째 점검 위치로의 요청과 브라우저 점검의 경우 그 응답에도 서명합니다.
- 명시적으로 공개: 내부 네트워크 연결이 전 구간에서 암호화되지는 않습니다. 로그인 후 스캔의 인증 정보는 전 구간에서 암호화된 상태를 유지합니다(제4.1절).
6.2 입력 통제 및 로그
- 로그인, 도메인·알림 수신처·권한 변경, 삭제 및 지원 접근 같은 계정과 워크스페이스의 중요 작업을 계정, 시간, IP 주소 및 국가와 함께 활동 로그에 기록하고 365일 후 삭제합니다.
- 보안과 악용 방지 목적의 페이지 접근 기록은 60일 후, 오류 로그는 90일 후, 발송 이메일 내용은 30일 후 삭제합니다. 보고서나 포털 링크 등 요청 주소와 리퍼러의 접근 토큰은 페이지 접근 기록에 마스킹된 형태로만 나타납니다.
- 계약 문서 수락은 표시된 버전, 체크섬, 시간, IP 주소 및 브라우저 식별자와 함께 저장합니다.
- 증거 기록에 외부 타임스탬프 기관의 타임스탬프를 추가할 수 있으며 내용이 아닌 체크섬만 전송합니다.
7. 가용성 및 복원력
7.1 백업
- 데이터베이스를 매일 밤 백업합니다. 백업 프로그램의 성공 완료, 최소 한 개의 레코드, 데이터베이스와 같은 수의 테이블 및 완전한 실행의 마지막 줄을 검사한 후에만 최종 파일명을 부여합니다. 새 백업이 성공한 후에만 오래된 백업을 제거합니다.
- 각 백업은 14일 후 삭제합니다. 저장 위치는 웹으로 제공되는 모든 디렉터리 밖이며 프로젝트 내부 위치는 거부합니다.
- 복원 테스트: 매주 최신 백업을 일회용 데이터베이스에 로드하고 운영 데이터베이스와 테이블별로 비교한 후 다시 삭제합니다. 결과를 저장합니다.
- 백업이나 테스트가 실패하면 이메일과 운영자 휴대폰으로 알림을 보냅니다.
- 사고 후 복구: 데이터베이스가 실패하거나 데이터가 손상되면 검증된 최신 백업을 복원합니다. 이후 변경 사항, 보통 최대 하루 분량이 유실될 수 있으며 백업이 실패했다면 더 많을 수 있습니다. 그런 다음 알려진 이후의 삭제 요청을 다시 실행합니다(제8절). 특정 복구 시간은 약속하지 않습니다.
- 한계의 명시적 공개: 현재 백업은 데이터베이스와 같은 장소에 저장하며 별도로 암호화하지 않습니다. 운영 오류, 잘못된 변경 및 데이터 손상은 방어하지만 서버 자체의 소실은 방어하지 못합니다. 두 번째 장소의 암호화 사본을 계획 중입니다(제10절).
- 로그인 후 스캔의 인증 정보는 백업에 암호문으로만 포함되며 두 번째 인증 요소의 비밀 값도 데이터베이스 외부의 키로 암호화된 형태로만 포함됩니다.
7.2 모니터링
- 상태 실행이 데이터베이스, 대기열 및 스캐너가 유휴 중에도 정기 기록하는 하트비트를 포함하여 서비스 구성요소를 오 분마다 확인합니다. 구성요소가 실패하면 알림을 보내고 복구하면 정상 복귀를 알립니다.
- 상호 감시: 상태 실행은 자신이 실행되는 기기의 장애를 보고할 수 없습니다. 따라서 스캔 서버가 매분 애플리케이션 응답을 확인하고 여러 번 연속 실패하면 고정 텍스트로 운영자 휴대폰에 알립니다. 반대로 웹 서버는 스캐너의 하트비트를 감시하며 설정 체크리스트에서 상호 감시 실행 여부를 보여 줍니다.
- 오류 알림: 처음 발생한 오류 유형은 즉시 한 번 보고합니다. 오류가 누적되면 운영자 휴대폰에는 신호 한 번만 보내고 하루 한 번 개요를 보냅니다. 따라서 고객을 통해서야 오류를 알게 되는 일이 없습니다.
- 한계의 명시적 공개: 두 서버는 같은 장소에 있습니다. 전력이나 인터넷 연결 등의 전체 장소 장애는 알림 체계로 보고하지 못하고 사람이 알아차립니다.
7.3 변경 및 배포
- 새 버전은 먼저 별도 개발 환경에서 빌드하고 테스트합니다. 배포는 첫 파일 쓰기 전에 모든 전제조건을 확인하고 데이터베이스 스키마를 변경하며 스캐너 재시작 전에 진행 중인 점검이 정상적으로 끝나도록 합니다.
- 신규 고객의 이용 경로에는 전환 후 실행하는 실제 HTTP 스모크 테스트가 있습니다. 매번 배포 전에 자동 테스트 모음을 실행한다고 주장하지는 않습니다.
8. 삭제 및 보관 기간
- 매일 밤 삭제 실행이 개인정보 처리방침과 데이터 처리 계약에 명시된 기간을 적용합니다. 문서의 수치가 참조하는 동일한 설정을 읽으므로 이 기간에 관해서는 설명과 동작이 다르지 않습니다.
- 스크린샷 포함 점검 결과는 13개월 후(도메인별 최신 결과 유지), 확장 기능 통계는 13개월 후, 알림 전달 로그는 90일 후, 지원 요청은 24개월 후 삭제합니다.
- 도메인을 제거하면 점검, 양식, 발견 사항, 스크린샷, 보고서, 작업, 알림 수신처와 로그, 인시던트, 전달 데이터, 로그인 후 스캔 인증 정보 및 증거를 포함한 도메인 데이터를 삭제합니다.
- 계정은 즉시 삭제됩니다. 다른 구성원이 없는 워크스페이스는 데이터와 함께 삭제하고 다른 구성원이 있는 워크스페이스는 다른 구성원에게 이전합니다. 관리자를 우선하며 그중 가장 오래된 관리자에게 이전합니다. 삭제 항목을 포함하여 더 이상 기존 계정을 가리키지 않는 이전 계정 번호를 유지하는 로그, 발송 이메일, 계약 체결 증거, 지원 요청, 잠재 고객 점검 보고서(최대 90일) 및 Stripe 결제 데이터는 각각의 기간이 만료될 때까지 남습니다. 세부 사항은 개인정보 처리방침에 있습니다.
- 삭제된 데이터는 14일 후 백업이 만료될 때까지 남습니다. 백업 내에서 선별 삭제하지는 않습니다. 백업을 복원하면 알려진 이후의 삭제 요청을 수동으로 다시 수행합니다.
9. 조직 및 검토
- 인력: 현재 소유자가 직접 서비스를 운영합니다. 다른 사람은 비밀 유지 약정을 체결한 후 필요한 범위에서만 접근하며 당사의 지시에 따라서만 데이터를 처리합니다(GDPR 제29조 및 제32조(4)).
- 하위 프로세서: 보증을 검토하고 GDPR 제28조(4)에 따른 계약을 체결한 후에만 이용하며 하위 프로세서 페이지에 명시합니다. 세부 사항은 데이터 처리 계약에 따릅니다.
- 개인정보 침해: 프로세서 데이터에 개인정보 침해가 영향을 주면 부당한 지체 없이, 가능하면 48시간 이내에 고객에게 알립니다. 세부 사항은 데이터 처리 계약에 따릅니다.
- 취약점 신고: 보안 및
/.well-known/security.txt파일을 통해 신고를 받습니다. - 설정 및 출시 체크리스트: 관리 영역에서 백업, 두 번째 인증 요소가 없는 관리자, 메일 설정 및 하트비트 같은 보안 관련 설정의 상태를 측정하고 편차를 표시합니다.
- 이 조치의 검토(GDPR 제32조(1)(d)): 서비스의 중대한 변경 시, 보안 사고 발생 후 및 그 밖에는 최소 연 일 회 수행합니다. 조치가 효과적이고 위험에 여전히 부합하는지 평가하여 이 페이지의 새 버전에 결과를 기록합니다. 변경이 없으면 제11절에 검토 날짜를 기록합니다. 설정 및 출시 체크리스트는 해당 설정의 상태를 계속 측정합니다.
- 외부 감사: 현재 외부 침투 테스트를 의뢰하지 않았고 보안 인증도 없습니다. 이를 있다고 가정하지 않도록 명시합니다.
10. 계획 중이며 아직 구현하지 않은 사항
새 버전에서 구현 완료로 명시하기 전까지 다음 사항은 약속된 조치가 아닙니다:
- 두 번째 장소의 백업: 서버 전체가 소실되어도 데이터가 유실되지 않도록 야간 백업의 암호화 사본을 서버 외부에 보관.
- 두 번째 점검 위치: 독립된 두 번째 위치에서의 브라우저 점검 확인은 서비스에 준비되어 있지만 설정되지 않았습니다. 설정 없이는 두 번째 위치의 확인이 없습니다.
- 서버 관리 강화: 계속 진행 중입니다. 제1절의 이유로 세부 사항은 공개하지 않습니다.
11. 상태 및 버전
- 버전 1.1 · 최종 업데이트: 2026년 10월 22일 · 언어별 버전 간에 차이가 있으면 독일어 대신 폴란드어 버전이 우선하며 다른 변경은 없습니다.
- 버전 1.0 · 최종 업데이트: 2026년 10월 11일 · 독립 페이지로서 첫 버전이며 이전에는 데이터 처리 계약의 부속서 2였습니다. 이전 부속서 대비 수정 사항: 복원 테스트는 매주 실행하고 백업은 같은 서버에 있으며 매 배포 전 자동 테스트 모음을 실행하지 않고 내부 네트워크 연결이 전 구간에서 암호화되지는 않습니다. 새로 설명한 사항: 로그인 후 스캔 인증 정보의 암호화, 스캐너 격리, 상호 감시 및 오류 알림.
- 변경 사항은 새 버전 번호로 여기와 계약 문서 변경 사항 개요에 게시합니다. 조치가 약화되면 데이터 처리 계약의 통지 기간이 적용됩니다.
- 언어별 버전 간에 차이가 있으면 폴란드어 버전이 우선합니다.