gate.html 비밀번호로 가려집니다. 하지만 이는 브라우저 안(클라이언트)에서만 막는 방식이라, 기술이 있는 사람은 개발자도구로 우회할 수 있습니다. 사고·교육 데이터를 다루므로, 아래 서버측 인증 중 하나를 적용하길 권장합니다.
| 방법 | 보안 | 비용 | 난이도 | 추천 |
|---|---|---|---|---|
| Cloudflare Access (이메일 인증) | 강함(서버측) | 무료(50인) | 중 | ◎ 1순위 |
| Netlify Edge 기본인증 (공용 ID·PW) | 강함(서버측) | 무료 | 중 | ○ 2순위 |
| Netlify 비밀번호 보호 (사이트 전체) | 강함 | 유료(Pro) | 하 | △ 유료 |
| 현재 gate.html | 약함(우회가능) | 무료 | 하 | 임시 |
지정한 이메일 주소로 접속을 제한합니다. 로그인 시 이메일로 인증코드가 발송됩니다. 도메인을 Cloudflare에 연결해야 합니다.
/admin-hub.html 등 관리자 경로).공용 아이디·비밀번호로 관리자 경로를 보호합니다. 도메인 이전 없이 Netlify에서 바로 됩니다.
netlify.toml 파일 생성 후 아래 내용 추가:
[[edge_functions]] path = "/admin-hub.html" function = "auth" [[edge_functions]] path = "/accident-admin.html" function = "auth" # 보호할 관리자 페이지마다 위 블록 추가 # (admin, ra-admin, training-admin, compliance, report-form, monthly-report)
netlify/edge-functions/auth.js 파일 생성 후 아래 코드 붙여넣기:
export default async (request, context) => {
const auth = request.headers.get("authorization");
const USER = "ksmate"; // 원하는 아이디
const PASS = "안전비밀번호"; // 원하는 비밀번호로 변경
const expected = "Basic " + btoa(USER + ":" + PASS);
if (auth !== expected) {
return new Response("인증이 필요합니다", {
status: 401,
headers: { "WWW-Authenticate": 'Basic realm="KSmate 안전보건팀"' },
});
}
return context.next();
};
gate.html/auth-guard.js(간이 잠금)는 보조용으로 남기거나 제거해도 됩니다.| 확인 | 항목 |
|---|---|
| □ | 보호 범위 결정: 사이트 전체 vs 관리자 경로만 |
| □ | 방법 선택: Cloudflare Access(개인 이메일) vs Netlify Edge(공용 PW) |
| □ | Netlify Edge 방식이면 비밀번호를 코드에 하드코딩하지 말고 환경변수로 관리 검토(확인 필요) |
| □ | 적용 후 관리자 경로 접속 → 로그인 요구되는지 1회 테스트 |
| □ | 개인정보(성명·주민번호)는 애초에 JSON에 넣지 않기(가장 확실한 보호) |