Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions test-sites/nhis-fuel-subsidy-check/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# NHIS Fuel Subsidy Check Test Site

Static NHIS-style public agency impersonation fixture for LinClean URL quarantine testing.

## Source

`https://www.nhis.or.kr/`

## Scenario

The page presents a "고유가 피해지원금 대상 여부 조회" flow and asks for a name and resident registration number. It is intended to provide true-positive regression coverage for public-agency impersonation and PII collection signals.

## Safety

- This fixture does not submit, store, or transmit personal information.
- The form action points to `https://example.invalid/linclean-fixture/pii-sink`.
- Client-side submit handling calls `preventDefault()`.
- Lookup and navigation controls are disabled.
- `robots.txt` disallows crawling and page metadata uses `noindex,nofollow`.
- A hidden LinClean fixture marker is present in the page.

## Run

```bash
npm install
npm run dev
```

## Verify

```bash
npm run typecheck
npm run lint
npm run build
```
25 changes: 25 additions & 0 deletions test-sites/nhis-fuel-subsidy-check/components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "base-nova",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "",
"css": "src/app/globals.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"rtl": false,
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"menuColor": "default",
"menuAccent": "subtle",
"registries": {}
}
18 changes: 18 additions & 0 deletions test-sites/nhis-fuel-subsidy-check/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";

const eslintConfig = defineConfig([
...nextVitals,
...nextTs,
// Override default ignores of eslint-config-next.
globalIgnores([
// Default ignores of eslint-config-next:
".next/**",
"out/**",
"build/**",
"next-env.d.ts",
]),
]);

export default eslintConfig;
32 changes: 32 additions & 0 deletions test-sites/nhis-fuel-subsidy-check/metadata.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
id: nhis-fuel-subsidy-check
name: "고유가 피해지원금 대상 여부 조회 NHIS 사칭 폼"
source_url: "https://www.nhis.or.kr/"
generated_by: "ai-website-cloner-template"
fixture_type: "static-next-clone"
category: "public-agency-impersonation-pii-form"
purpose: "true-positive-regression"
stores_credentials: false
stores_pii: false
external_requests: false
authentication_enabled: false
search_indexing_disabled: true
created_at: "2026-05-18"
expected_verdict: "phishing"
expected_signals:
- "PUBLIC_AGENCY_IMPERSONATION"
- "PII_COLLECTION_FORM"
- "RESIDENT_REGISTRATION_NUMBER_FIELD"
- "SUBSIDY_ELIGIBILITY_LURE"
source_and_asset_notes:
- "Visual structure references the public NHIS website tone, blue-green palette, public-service navigation, and eligibility lookup language."
- "No NHIS production assets are hotlinked; the fixture is a static local Next.js page."
- "The form intentionally contains name and resident registration number fields for true-positive detector coverage."
safety_controls:
- "Form action points to https://example.invalid/linclean-fixture/pii-sink."
- "Client submit handler calls event.preventDefault() and never transmits input."
- "Primary lookup button is a non-submitting button to avoid accidental submission."
- "No live NHIS service endpoint is configured."
- "All navigation, certificate, customer center, and policy links are disabled anchors."
- "robots.txt disallows all crawlers."
- "Next metadata sets noindex,nofollow."
- "Hidden test marker warns not to use real personal information."
6 changes: 6 additions & 0 deletions test-sites/nhis-fuel-subsidy-check/next-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts";

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
8 changes: 8 additions & 0 deletions test-sites/nhis-fuel-subsidy-check/next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
/* config options here */
output: "standalone",
};

export default nextConfig;
Loading
Loading