보안 감사 결과 CRITICAL 2건, HIGH 5건 발견 → 수정 완료 + 자동화 구축. [보안 수정] - issue-view.js: 하드코딩 비밀번호 → crypto.getRandomValues() 랜덤 생성 - pushSubscriptionController.js: ntfy 비밀번호 → process.env.NTFY_SUB_PASSWORD - DEPLOY-GUIDE.md/PROGRESS.md/migration SQL: 평문 비밀번호 → placeholder - docker-compose.yml/.env.example: NTFY_SUB_PASSWORD 환경변수 추가 [보안 강제 시스템 - 신규] - scripts/security-scan.sh: 8개 규칙 (CRITICAL 2, HIGH 4, MEDIUM 2) 3모드(staged/all/diff), severity, .securityignore, MEDIUM 임계값 - .githooks/pre-commit: 로컬 빠른 피드백 - .githooks/pre-receive-server.sh: Gitea 서버 최종 차단 bypass 거버넌스([SECURITY-BYPASS: 사유] + 사용자 제한 + 로그) - SECURITY-CHECKLIST.md: 10개 카테고리 자동/수동 구분 - docs/SECURITY-GUIDE.md: 운영자 가이드 (워크플로우, bypass, FAQ) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
31 lines
1.3 KiB
HTML
31 lines
1.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>(주)테크니컬코리아 생산팀 포털</title>
|
|
<link rel="icon" type="image/png" href="/img/favicon.png">
|
|
<!-- SW 캐시 강제 해제 (Chrome 대응) -->
|
|
<script>
|
|
if('serviceWorker' in navigator){navigator.serviceWorker.getRegistrations().then(function(r){r.forEach(function(reg){reg.unregister()});})}
|
|
if('caches' in window){caches.keys().then(function(k){k.forEach(function(key){caches.delete(key)})})}
|
|
</script>
|
|
<script src="/js/sso-relay.js?v=20260401"></script>
|
|
<script src="/js/api-base.js?v=2026031401"></script>
|
|
<script>
|
|
// SSO 토큰 확인
|
|
var token = window.getSSOToken ? window.getSSOToken() : (localStorage.getItem('sso_token') || localStorage.getItem('token'));
|
|
if (token && token !== 'undefined' && token !== 'null') {
|
|
// 이미 로그인된 경우 대시보드로 이동
|
|
window.location.replace('/pages/dashboard-new.html');
|
|
} else {
|
|
// SSO 로그인 페이지로 리다이렉트 (gateway의 /login)
|
|
window.location.replace('/login?redirect=' + encodeURIComponent(window.location.origin + '/pages/dashboard-new.html'));
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<!-- SSO 로그인 페이지로 자동 리다이렉트됩니다 -->
|
|
</body>
|
|
</html>
|