Files
SMANAGE/TempLate/Org/write.html
T
2026-06-16 11:55:14 +08:00

598 lines
41 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Create New SVE Entry - SVE Database</title>
<script src="https://tailwind.gvsds.com"></script>
<link href="https://cdn.gvsds.com/font-awesome/css/all.min.css" rel="stylesheet">
<script src="https://cdn.gvsds.com/Chart.js/dist/chart.umd.js"></script>
<!-- Markdown编辑器依赖 -->
<script src="https://cdn.bootcdn.net/ajax/libs/marked/4.0.0/marked.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/prism/1.29.0/prism.min.js"></script>
<link href="https://cdn.bootcdn.net/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Tailwind配置 -->
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#0F3460',
secondary: '#1A73E8',
danger: '#D93025',
warning: '#F4B400',
success: '#1E8E3E',
neutral: '#5F6368',
light: '#F8F9FA',
dark: '#202124'
},
fontFamily: {
inter: ['Inter', 'sans-serif'],
},
}
}
}
</script>
<style type="text/tailwindcss">
@layer utilities {
.content-auto {
content-visibility: auto;
}
.shadow-soft {
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
}
.text-balance {
text-wrap: balance;
}
/* 语言切换按钮样式 */
.lang-switch-btn {
padding: 2px 8px;
border-radius: 4px;
transition: all 0.2s;
}
.lang-switch-btn.active {
background-color: #1A73E8;
color: white;
font-weight: 500;
}
.lang-switch-btn.inactive {
background-color: #F8F9FA;
color: #5F6368;
}
.lang-switch-btn.inactive:hover {
background-color: #E8F0FE;
color: #1A73E8;
}
/* Markdown编辑器样式 */
.markdown-editor {
border: 1px solid #E5E7EB;
border-radius: 0.5rem;
overflow: hidden;
}
.editor-tab {
padding: 0.5rem 1rem;
cursor: pointer;
transition: all 0.2s;
}
.editor-tab.active {
border-bottom: 2px solid #1A73E8;
color: #1A73E8;
font-weight: 500;
}
.editor-content {
min-height: 200px;
resize: vertical;
}
.preview-content {
min-height: 200px;
padding: 1rem;
background-color: #FAFAFA;
border-top: 1px solid #E5E7EB;
}
.preview-content h1, .preview-content h2, .preview-content h3,
.preview-content h4, .preview-content h5, .preview-content h6 {
margin: 1rem 0;
font-weight: 600;
}
.preview-content p {
margin: 0.5rem 0;
line-height: 1.6;
}
.preview-content ul, .preview-content ol {
margin: 0.5rem 0 0.5rem 1.5rem;
}
.preview-content code {
padding: 0.2rem 0.4rem;
background-color: #F3F4F6;
border-radius: 0.25rem;
font-family: monospace;
font-size: 0.9rem;
}
.preview-content pre {
padding: 1rem;
background-color: #F3F4F6;
border-radius: 0.5rem;
overflow-x: auto;
margin: 1rem 0;
}
.preview-content pre code {
padding: 0;
background-color: transparent;
}
}
</style>
</head>
<body class="font-inter bg-gray-50 text-dark">
<!-- 顶部导航栏(含语言切换) -->
<header class="bg-white shadow-sm sticky top-0 z-50 transition-all duration-300">
<div class="container mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between items-center py-4">
<div class="flex items-center space-x-2">
<i class="fa fa-shield text-primary text-2xl"></i>
<span class="text-xl font-bold text-primary" data-i18n="sve_database">SVE Database</span>
</div>
<!-- 桌面端语言切换按钮组 -->
<div class="hidden md:flex items-center space-x-2 mr-4">
<button id="lang-en" class="lang-switch-btn active">English</button>
<button id="lang-zh" class="lang-switch-btn inactive">中文</button>
</div>
<nav class="hidden md:flex items-center space-x-8">
<a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="home">Home</a>
<a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="browse">Browse</a>
<a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="search">Search</a>
<a href="#" class="text-primary font-medium hover:text-secondary transition-colors" data-i18n="create_sve">Create SVE</a>
<a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="documentation">Documentation</a>
</nav>
<div class="flex items-center space-x-4">
<!-- 移动端语言切换(默认隐藏,汉堡菜单展开时显示) -->
<div class="hidden sm:flex items-center space-x-2 mr-2" id="mobile-lang-switch">
<button id="mobile-lang-en" class="lang-switch-btn active text-xs">EN</button>
<button id="mobile-lang-zh" class="lang-switch-btn inactive text-xs">中文</button>
</div>
<div class="relative hidden md:block">
<input type="text" placeholder="Search SVE..." class="pl-10 pr-4 py-2 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary w-64 transition-all" data-i18n-placeholder="search_sve_placeholder">
<i class="fa fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400"></i>
</div>
<button class="md:hidden text-neutral hover:text-primary">
<i class="fa fa-search text-xl"></i>
</button>
<button class="md:hidden text-neutral hover:text-primary" id="mobile-menu-btn">
<i class="fa fa-bars text-xl"></i>
</button>
</div>
</div>
<!-- 移动端导航菜单(默认隐藏) -->
<div class="md:hidden hidden bg-white border-t border-gray-100 py-3" id="mobile-menu">
<nav class="flex flex-col space-y-3 px-2">
<a href="#" class="text-neutral hover:text-secondary transition-colors py-2 px-3 rounded" data-i18n="home">Home</a>
<a href="#" class="text-neutral hover:text-secondary transition-colors py-2 px-3 rounded" data-i18n="browse">Browse</a>
<a href="#" class="text-neutral hover:text-secondary transition-colors py-2 px-3 rounded" data-i18n="search">Search</a>
<a href="#" class="text-primary font-medium hover:text-secondary transition-colors py-2 px-3 rounded" data-i18n="create_sve">Create SVE</a>
<a href="#" class="text-neutral hover:text-secondary transition-colors py-2 px-3 rounded" data-i18n="documentation">Documentation</a>
</nav>
</div>
</div>
</header>
<!-- 主内容区 -->
<main class="container mx-auto px-4 sm:px-6 lg:px-8 py-8">
<!-- 面包屑导航 -->
<div class="text-sm text-neutral mb-6">
<a href="#" class="hover:text-secondary" data-i18n="home">Home</a> &gt;
<span class="text-primary font-medium" data-i18n="create_sve">Create New SVE Entry</span>
</div>
<!-- 页面标题 -->
<div class="mb-8">
<h1 class="text-2xl md:text-3xl font-bold text-primary mb-2" data-i18n="create_sve_title">Create New SVE Entry</h1>
<p class="text-neutral" data-i18n="create_sve_desc">Fill in the following fields to create a new SVE entry. All required fields are marked with an asterisk (*).</p>
</div>
<!-- 操作按钮区(导入/导出) -->
<div class="bg-white rounded-xl shadow-soft p-4 mb-8 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4">
<div class="flex items-center gap-2">
<i class="fa fa-info-circle text-secondary"></i>
<span class="text-neutral text-sm" data-i18n="json_import_export_note">You can import SVE data from JSON or export the current form as JSON</span>
</div>
<div class="flex gap-3">
<!-- 导入JSON -->
<label class="relative group">
<input type="file" id="importJson" accept=".json" class="absolute opacity-0 w-0 h-0">
<button type="button" class="flex items-center gap-2 px-4 py-2 border border-secondary text-secondary hover:bg-secondary/5 rounded-lg transition-colors text-sm font-medium" data-i18n="import_json">
<i class="fa fa-upload"></i>
Import JSON
</button>
</label>
<!-- 导出JSON -->
<button id="exportJson" type="button" class="flex items-center gap-2 px-4 py-2 bg-secondary text-white hover:bg-secondary/90 rounded-lg transition-colors text-sm font-medium" data-i18n="export_json">
<i class="fa fa-download"></i>
Export JSON
</button>
</div>
</div>
<!-- SVE表单 -->
<form id="sveForm" class="bg-white rounded-xl shadow-soft p-6 mb-8">
<!-- 第一部分:SVE基础信息 -->
<div class="mb-8 pb-6 border-b border-gray-200">
<h2 class="text-xl font-semibold mb-4 text-primary" data-i18n="sve_basic_info">1. SVE Basic Information</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- SVE ID -->
<div>
<label for="sveId" class="block text-sm font-medium text-neutral mb-1" data-i18n="sve_id">SVE ID *</label>
<div class="flex items-center">
<span class="text-neutral mr-2">SVE-</span>
<input type="text" id="sveYear" name="sveYear" placeholder="YYYY" maxlength="4" class="w-20 px-3 py-2 border border-gray-300 rounded-l-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="sve_year_placeholder">
<span class="text-neutral mx-2">-</span>
<input type="text" id="sveNumber" name="sveNumber" placeholder="XXXXXX" maxlength="6" class="flex-1 px-3 py-2 border border-gray-300 rounded-r-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="sve_number_placeholder">
</div>
<p class="text-xs text-neutral mt-1" data-i18n="sve_id_format_note">Format: SVE-YYYY-XXXXXX (e.g., SVE-2024-123456)</p>
</div>
<!-- 发布日期 -->
<div>
<label for="publishDate" class="block text-sm font-medium text-neutral mb-1" data-i18n="publish_date">Publish Date *</label>
<input type="date" id="publishDate" name="publishDate" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary">
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<!-- 漏洞标题 -->
<div>
<label for="vulnTitle" class="block text-sm font-medium text-neutral mb-1" data-i18n="vuln_title">Vulnerability Title *</label>
<input type="text" id="vulnTitle" name="vulnTitle" placeholder="e.g., Cross-Site Scripting Vulnerability in WebFramework v2.3.0" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="vuln_title_placeholder">
</div>
<!-- 漏洞状态 -->
<div>
<label for="vulnStatus" class="block text-sm font-medium text-neutral mb-1" data-i18n="vuln_status">Vulnerability Status *</label>
<select id="vulnStatus" name="vulnStatus" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary">
<option value="draft" data-i18n="vuln_status_draft">Draft (Not Published)</option>
<option value="public" data-i18n="vuln_status_public">Publicly Disclosed</option>
<option value="reserved" data-i18n="vuln_status_reserved">Reserved (Pending Disclosure)</option>
</select>
</div>
</div>
</div>
<!-- 第二部分:漏洞描述(Markdown编辑器) -->
<div class="mb-8 pb-6 border-b border-gray-200">
<h2 class="text-xl font-semibold mb-4 text-primary" data-i18n="vuln_description">2. Vulnerability Description *</h2>
<p class="text-sm text-neutral mb-3" data-i18n="vuln_description_note">Describe the vulnerability in detail, including technical details, attack scenarios, and potential impacts. Support Markdown formatting.</p>
<!-- Markdown编辑器 -->
<div class="markdown-editor w-full">
<div class="flex border-b border-gray-200">
<div class="editor-tab active flex-1 text-center" data-tab="edit" data-i18n="editor_edit_tab">Edit</div>
<div class="editor-tab flex-1 text-center text-neutral" data-tab="preview" data-i18n="editor_preview_tab">Preview</div>
</div>
<textarea id="vulnDescription" name="vulnDescription" class="editor-content w-full px-4 py-3 border-0 focus:outline-none" placeholder="# Vulnerability Description&#10;&#10;## Technical Details&#10;Describe the technical details of the vulnerability here...&#10;&#10;## Attack Scenario&#10;Explain how an attacker could exploit this vulnerability...&#10;&#10;## Potential Impact&#10;List the potential impacts of this vulnerability..." data-i18n-placeholder="vuln_description_editor_placeholder"></textarea>
<div class="preview-content hidden" id="vulnDescriptionPreview"></div>
</div>
</div>
<!-- 第三部分:受影响产品 -->
<div class="mb-8 pb-6 border-b border-gray-200">
<div class="flex justify-between items-center mb-4">
<h2 class="text-xl font-semibold text-primary" data-i18n="affected_products">3. Affected Products *</h2>
<button type="button" id="addProductBtn" class="flex items-center gap-1 px-3 py-1 text-secondary hover:text-primary text-sm font-medium" data-i18n="add_product">
<i class="fa fa-plus-circle"></i>
Add Product
</button>
</div>
<p class="text-sm text-neutral mb-3" data-i18n="affected_products_note">List all products affected by this vulnerability. Include product name, version, and whether it's fixed in later versions.</p>
<!-- 受影响产品列表 -->
<div id="productsList" class="space-y-4">
<!-- 默认产品项 -->
<div class="product-item p-4 border border-gray-200 rounded-lg">
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-3">
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="product_name">Product Name *</label>
<input type="text" name="productName[]" placeholder="e.g., WebFramework" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="product_name_placeholder">
</div>
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="product_version">Affected Version(s) *</label>
<input type="text" name="productVersion[]" placeholder="e.g., v2.3.0, v2.2.x" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="product_version_placeholder">
</div>
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="fixed_version">Fixed Version (if any)</label>
<input type="text" name="productFixedVersion[]" placeholder="e.g., v2.3.1, None" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="fixed_version_placeholder">
</div>
</div>
<button type="button" class="removeProductBtn text-danger hover:text-danger/80 text-sm flex items-center gap-1" data-i18n="remove_product">
<i class="fa fa-trash-o"></i>
Remove
</button>
</div>
</div>
</div>
<!-- 第四部分:CVSS评分 -->
<div class="mb-8 pb-6 border-b border-gray-200">
<h2 class="text-xl font-semibold mb-4 text-primary" data-i18n="cvss_rating">4. CVSS v3.1 Rating *</h2>
<p class="text-sm text-neutral mb-3" data-i18n="cvss_rating_note">Select the CVSS v3.1 metrics to calculate the base score. Refer to the SVE documentation for guidance on selecting appropriate metrics.</p>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6">
<!-- 攻击向量 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="attack_vector">Attack Vector (AV) *</label>
<select name="cvssAV" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="N" data-i18n="av_network">Network (N) - Exploitable remotely</option>
<option value="A" data-i18n="av_adjacent">Adjacent (A) - Exploitable via adjacent network</option>
<option value="L" data-i18n="av_local">Local (L) - Exploitable only locally</option>
<option value="P" data-i18n="av_physical">Physical (P) - Requires physical access</option>
</select>
</div>
<!-- 攻击复杂度 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="attack_complexity">Attack Complexity (AC) *</label>
<select name="cvssAC" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="L" data-i18n="ac_low">Low (L) - Minimal conditions</option>
<option value="H" data-i18n="ac_high">High (H) - Specialized conditions</option>
</select>
</div>
<!-- 所需权限 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="privileges_required">Privileges Required (PR) *</label>
<select name="cvssPR" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="N" data-i18n="pr_none">None (N) - No privileges needed</option>
<option value="L" data-i18n="pr_low">Low (L) - Basic privileges needed</option>
<option value="H" data-i18n="pr_high">High (H) - Admin privileges needed</option>
</select>
</div>
<!-- 用户交互 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="user_interaction">User Interaction (UI) *</label>
<select name="cvssUI" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="N" data-i18n="ui_none">None (N) - No user interaction needed</option>
<option value="R" data-i18n="ui_required">Required (R) - User action needed</option>
</select>
</div>
<!-- 影响范围 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="scope">Scope (S) *</label>
<select name="cvssS" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="U" data-i18n="s_unchanged">Unchanged (U) - Impact limited to vulnerable component</option>
<option value="C" data-i18n="s_changed">Changed (C) - Impact extends beyond vulnerable component</option>
</select>
</div>
<!-- 机密性影响 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="confidentiality_impact">Confidentiality (C) *</label>
<select name="cvssC" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="N" data-i18n="c_none">None (N) - No confidentiality impact</option>
<option value="L" data-i18n="c_low">Low (L) - Limited confidentiality loss</option>
<option value="H" data-i18n="c_high">High (H) - Complete confidentiality loss</option>
</select>
</div>
<!-- 完整性影响 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="integrity_impact">Integrity (I) *</label>
<select name="cvssI" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="N" data-i18n="i_none">None (N) - No integrity impact</option>
<option value="L" data-i18n="i_low">Low (L) - Limited integrity loss</option>
<option value="H" data-i18n="i_high">High (H) - Complete integrity loss</option>
</select>
</div>
<!-- 可用性影响 -->
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="availability_impact">Availability (A) *</label>
<select name="cvssA" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary cvss-metric">
<option value="N" data-i18n="a_none">None (N) - No availability impact</option>
<option value="L" data-i18n="a_low">Low (L) - Limited availability loss</option>
<option value="H" data-i18n="a_high">High (H) - Complete availability loss</option>
</select>
</div>
</div>
<!-- 计算出的CVSS评分 -->
<div class="bg-light p-4 rounded-lg border border-gray-200">
<div class="flex flex-col sm:flex-row sm:items-center justify-between gap-3">
<div>
<div class="text-sm text-neutral mb-1" data-i18n="cvss_base_score">CVSS v3.1 Base Score</div>
<div class="flex items-center gap-3">
<span id="cvssScore" class="text-2xl font-bold text-danger">6.1</span>
<span id="cvssSeverity" class="px-2 py-1 rounded-full bg-warning/10 text-warning text-xs font-medium">MEDIUM</span>
</div>
</div>
<div>
<div class="text-xs text-neutral mb-1" data-i18n="cvss_vector_string">CVSS Vector String</div>
<div id="cvssVector" class="text-sm font-mono bg-white px-2 py-1 rounded border border-gray-200">CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N</div>
</div>
</div>
</div>
</div>
<!-- 第五部分:解决方案(Markdown编辑器) -->
<div class="mb-8 pb-6 border-b border-gray-200">
<h2 class="text-xl font-semibold mb-4 text-primary" data-i18n="solutions_mitigations">5. Solutions and Mitigations</h2>
<p class="text-sm text-neutral mb-3" data-i18n="solutions_mitigations_note">Provide solutions, mitigations, and workarounds for the vulnerability. Support Markdown formatting (e.g., code blocks for workaround code).</p>
<!-- Markdown编辑器 -->
<div class="markdown-editor w-full">
<div class="flex border-b border-gray-200">
<div class="editor-tab active flex-1 text-center" data-tab="edit" data-i18n="editor_edit_tab">Edit</div>
<div class="editor-tab flex-1 text-center text-neutral" data-tab="preview" data-i18n="editor_preview_tab">Preview</div>
</div>
<textarea id="solutions" name="solutions" class="editor-content w-full px-4 py-3 border-0 focus:outline-none" placeholder="# Solutions and Mitigations&#10;&#10;## Recommended Actions&#10;1. Upgrade to the latest version&#10;2. Apply security patches&#10;&#10;## Workaround (if upgrade not possible)&#10;```javascript&#10;// Example workaround code&#10;function sanitizeInput(input) {&#10; return input.replace(/&/g, '&amp;')&#10; .replace(/&lt;/g, '&lt;')&#10; .replace(/&gt;/g, '&gt;');&#10;}&#10;```&#10;&#10;## Additional Guidance&#10;Provide any additional guidance for users..." data-i18n-placeholder="solutions_editor_placeholder"></textarea>
<div class="preview-content hidden" id="solutionsPreview"></div>
</div>
</div>
<!-- 第六部分:参考资料 -->
<div class="mb-8 pb-6 border-b border-gray-200">
<div class="flex justify-between items-center mb-4">
<h2 class="text-xl font-semibold text-primary" data-i18n="references">6. References</h2>
<button type="button" id="addReferenceBtn" class="flex items-center gap-1 px-3 py-1 text-secondary hover:text-primary text-sm font-medium" data-i18n="add_reference">
<i class="fa fa-plus-circle"></i>
Add Reference
</button>
</div>
<p class="text-sm text-neutral mb-3" data-i18n="references_note">Add references related to the vulnerability (e.g., vendor advisories, technical papers, SVE documentation links). Do not include CVE or CWE references.</p>
<!-- 参考资料列表 -->
<div id="referencesList" class="space-y-4">
<!-- 默认参考资料项 -->
<div class="reference-item p-4 border border-gray-200 rounded-lg">
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-3">
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="reference_type">Reference Type *</label>
<select name="referenceType[]" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary">
<option value="vendor" data-i18n="ref_vendor">Vendor Advisory</option>
<option value="tech_doc" data-i18n="ref_tech_doc">Technical Documentation</option>
<option value="sve_guide" data-i18n="ref_sve_guide">SVE Guidance</option>
<option value="research" data-i18n="ref_research">Research Paper</option>
<option value="other" data-i18n="ref_other">Other</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="reference_title">Reference Title</label>
<input type="text" name="referenceTitle[]" placeholder="e.g., WebFramework Security Advisory 2024-01" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="reference_title_placeholder">
</div>
<div>
<label class="block text-sm font-medium text-neutral mb-1" data-i18n="reference_url">Reference URL *</label>
<input type="url" name="referenceUrl[]" placeholder="https://example.com/security/advisory" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="reference_url_placeholder">
</div>
</div>
<button type="button" class="removeReferenceBtn text-danger hover:text-danger/80 text-sm flex items-center gap-1" data-i18n="remove_reference">
<i class="fa fa-trash-o"></i>
Remove
</button>
</div>
</div>
</div>
<!-- 第七部分:相关SVE -->
<div class="mb-8">
<div class="flex justify-between items-center mb-4">
<h2 class="text-xl font-semibold text-primary" data-i18n="related_sve">7. Related SVE Entries</h2>
<button type="button" id="addRelatedSveBtn" class="flex items-center gap-1 px-3 py-1 text-secondary hover:text-primary text-sm font-medium" data-i18n="add_related_sve">
<i class="fa fa-plus-circle"></i>
Add Related SVE
</button>
</div>
<p class="text-sm text-neutral mb-3" data-i18n="related_sve_note">Add other SVE entries that are related to this vulnerability (e.g., same product family, similar attack vector).</p>
<!-- 相关SVE列表 -->
<div id="relatedSveList" class="space-y-3">
<!-- 默认相关SVE项 -->
<div class="related-sve-item flex items-center gap-3 p-3 border border-gray-200 rounded-lg">
<input type="text" name="relatedSveId[]" placeholder="SVE-YYYY-XXXXXX" class="flex-1 px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary" data-i18n-placeholder="related_sve_id_placeholder">
<select name="relatedSveRelation[]" class="w-40 px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary">
<option value="same_product" data-i18n="related_same_product">Same Product</option>
<option value="similar_vuln" data-i18n="related_similar_vuln">Similar Vulnerability</option>
<option value="same_vendor" data-i18n="related_same_vendor">Same Vendor</option>
<option value="other" data-i18n="related_other">Other Relationship</option>
</select>
<button type="button" class="removeRelatedSveBtn text-danger hover:text-danger/80 p-2" data-i18n-title="remove_related_sve">
<i class="fa fa-times"></i>
</button>
</div>
</div>
</div>
<!-- 表单提交按钮 -->
<div class="flex flex-col sm:flex-row justify-end gap-4 pt-6 border-t border-gray-200">
<button type="button" class="px-6 py-3 border border-gray-300 text-neutral hover:bg-gray-50 rounded-lg transition-colors font-medium" data-i18n="save_draft">
Save as Draft
</button>
<button type="submit" class="px-6 py-3 bg-secondary text-white hover:bg-secondary/90 rounded-lg transition-colors font-medium" data-i18n="submit_sve">
Submit SVE Entry
</button>
</div>
</form>
</main>
<!-- 页脚 -->
<footer class="bg-white py-12">
<div class="container mx-auto px-4 sm:px-6 lg:px-8">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
<div>
<div class="flex items-center space-x-2 mb-4">
<i class="fa fa-shield text-primary text-xl"></i>
<span class="text-lg font-bold text-primary" data-i18n="sve_database">SVE Database</span>
</div>
<p class="text-sm text-neutral mb-4" data-i18n="footer_desc">A comprehensive database of security vulnerabilities and exposures, maintained by the Security Research Team. Independent of CVE and CWE.</p>
<div class="flex space-x-4">
<a href="#" class="text-neutral hover:text-primary transition-colors">
<i class="fa fa-twitter"></i>
</a>
<a href="#" class="text-neutral hover:text-primary transition-colors">
<i class="fa fa-github"></i>
</a>
<a href="#" class="text-neutral hover:text-primary transition-colors">
<i class="fa fa-linkedin"></i>
</a>
</div>
</div>
<div>
<h4 class="font-semibold text-dark mb-4" data-i18n="footer_resources">Resources</h4>
<ul class="space-y-2 text-sm">
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="documentation">Documentation</a></li>
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="api">API</a></li>
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="bulk_data">Bulk Data</a></li>
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="statistics">Statistics</a></li>
</ul>
</div>
<div>
<h4 class="font-semibold text-dark mb-4" data-i18n="footer_information">Information</h4>
<ul class="space-y-2 text-sm">
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="about_sve">About SVE</a></li>
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="sve_guidelines">SVE Guidelines</a></li>
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="vuln_metrics">Vulnerability Metrics</a></li>
<li><a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="faq">FAQ</a></li>
</ul>
</div>
<div>
<h4 class="font-semibold text-dark mb-4" data-i18n="footer_contact">Contact</h4>
<ul class="space-y-2 text-sm">
<li class="flex items-start">
<i class="fa fa-envelope text-secondary mt-1 mr-2"></i>
<a href="mailto:sve@gvsds.com" class="text-neutral hover:text-secondary transition-colors">sve@gvsds.com</a>
</li>
<li class="flex items-start">
<i class="fa fa-file-text text-secondary mt-1 mr-2"></i>
<a href="mailto:sve@gvsds.org?subject=[SVE]%20Report%20A%20Vulnerability%20!" class="text-neutral hover:text-secondary transition-colors" data-i18n="report_vuln">Report a Vulnerability</a>
</li>
<li class="flex items-start">
<i class="fa fa-info-circle text-secondary mt-1 mr-2"></i>
<a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="security_policy">Security Policy</a>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-200 mt-8 pt-6 flex flex-col md:flex-row justify-between items-center">
<p class="text-sm text-neutral" data-i18n="copyright">© 2024 SVE Database. All rights reserved.</p>
<div class="flex space-x-6 mt-4 md:mt-0 text-sm">
<a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="privacy_policy">Privacy Policy</a>
<a href="#" class="text-neutral hover:text-secondary transition-colors" data-i18n="terms_service">Terms of Service</a>
</div>
</div>
</div>
</footer>
<script src="/assets/js/i18n.js"></script>
<script src="/assets/js/write.js"></script>
</body>
</html>