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

444 lines
23 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title id="pageTitle">SVE Details - SVE Database</title>
<script src="https://tailwind.gvsds.com"></script>
<link href="https://cdn.gvsds.com/font-awesome/css/all.min.css" rel="stylesheet" media="print" onload="this.media='all'">
<script src="https://cdn.gvsds.com/Chart.js/dist/chart.umd.js"></script>
<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" media="print" onload="this.media='all'">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'">
<link rel="stylesheet" href="https://cdn.gvsds.com/highlight.js/styles/github.min.css" media="print" onload="this.media='all'">
<script src="https://cdn.gvsds.com/highlight.js/highlight.min.js"></script>
<!-- 需要添加的额外库 -->
<script src="https://cdn.gvsds.com/KaTeX/0.16.9/katex.min.js"></script>
<link rel="stylesheet" href="https://cdn.gvsds.com/KaTeX/0.16.9/katex.min.css" media="print" onload="this.media='all'">
<script src="https://cdn.gvsds.com/mermaid/11.5.0/mermaid.min.js"></script>
<script defer src="https://cdn.gvsds.com/KaTeX/0.16.9/contrib/auto-render.min.js" ></script>
<!-- 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;
}
/* 列表项样式 */
.list-item-bullet {
position: relative;
padding-left: 1.5rem;
}
.list-item-bullet::before {
content: "•";
position: absolute;
left: 0.5rem;
color: #5F6368;
}
.markdown-content * {
@apply text-black;
}
.markdown-content h2 {
@apply text-2xl font-bold text-black mt-8 mb-4 border-b border-gray-200 dark:border-gray-700 pb-2;
}
.markdown-content h3 {
@apply text-xl font-bold text-black mt-6 mb-3;
}
.markdown-content p {
@apply text-black mb-4 leading-relaxed;
}
.markdown-content a {
@apply text-primary hover:underline;
}
.markdown-content pre {
@apply bg-[#181a1f] rounded-lg p-4 my-4 overflow-x-auto relative border border-gray-200 dark:border-gray-700;
}
.markdown-content pre::before {
content: '';
}
.code-title {
position: relative;
top: 0;
left: 0;
font-size: 0.8rem;
color: #999;
background-color: #181a1f;
padding: 0.1rem 0.3rem;
border-radius: 0.2rem 0.2rem 0 0;
display: flex;
justify-content: space-between;
align-items: center;
}
.markdown-content code {
background-color: #181a1f;
color: #fff;
}
.markdown-content .copy-btn i {
color: #fff;
}
.markdown-content ul {
@apply list-disc pl-5 mb-4 text-gray-700 dark:text-gray-300;
}
.markdown-content ol {
@apply list-decimal pl-5 mb-4 text-gray-700 dark:text-gray-300;
}
.markdown-content blockquote {
@apply border-l-4 border-primary dark:border-primary/70 pl-4 italic my-4 text-gray-600 dark:text-gray-400;
}
/* 表格边框样式 */
.markdown-content table {
@apply border-collapse border border-gray-300 dark:border-gray-600 w-full;
}
.markdown-content th,
.markdown-content td {
@apply border border-gray-300 dark:border-gray-600 p-2;
}
/* 更多内嵌HTML卡片样式 */
.html-card {
@apply bg-gray-100 dark:bg-gray-700 p-4 rounded-md mb-4 shadow-md;
}
.html-card-blue {
@apply bg-blue-100 dark:bg-blue-800 p-4 rounded-md mb-4 shadow-md;
}
.html-card-green {
@apply bg-green-100 dark:bg-green-800 p-4 rounded-md mb-4 shadow-md;
}
}
</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-primary font-medium 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-neutral hover:text-secondary transition-colors" data-i18n="about">About</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-primary font-medium 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-neutral hover:text-secondary transition-colors py-2 px-3 rounded" data-i18n="about">About</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">
<!-- 面包屑导航(工具文字i18n + 动态SVE数据) -->
<div class="text-sm text-neutral mb-6">
<a href="/" class="hover:text-secondary" data-i18n="home">Home</a> &gt;
<span class="text-dark font-medium" id="breadCrumbSveId">SVE-2025-00000</span>
</div>
<!-- SVE标题和元数据(动态渲染) -->
<div class="bg-white rounded-xl shadow-soft p-6 mb-8">
<div class="flex flex-col lg:flex-row lg:items-start lg:justify-between gap-6">
<div class="w-full lg:w-2/3 space-y-6">
<div>
<div class="flex items-center gap-3 mb-3">
<h1 class="text-2xl md:text-3xl font-bold text-primary" id="sveIdDisplay">SVE-0000-00000</h1>
<button id="copyBtn" class="text-neutral hover:text-secondary transition-colors" title="Copy SVE ID" data-i18n-title="copy_sve_id">
<i class="fa fa-copy"></i>
</button>
<span id="copyMessage" class="text-success text-sm hidden" data-i18n="copied">Copied!</span>
</div>
<div>
<h2 class="text-xl md:text-2xl font-semibold text-dark mb-4 text-balance" style="word-wrap: break-word;" id="vulnTitle">TITLE...</h2>
</div>
<div class="flex flex-wrap gap-x-8 gap-y-2 text-sm text-neutral mb-2">
<div class="flex items-center">
<i class="fa fa-calendar mr-2 text-secondary"></i>
<span data-i18n="published">Published:</span> <span class="text-dark font-medium" id="publishDate">2025-08-29</span>
</div>
<div class="flex items-center">
<i class="fa fa-refresh mr-2 text-secondary"></i>
<span data-i18n="last_modified">Last Modified:</span> <span class="text-dark font-medium" id="lastModified">2025-08-29</span>
</div>
</div>
</div>
<!-- 漏洞描述(动态渲染) -->
<div>
<h3 class="text-xl font-semibold mb-4 flex items-center" data-i18n="description">
<i class="fa fa-info-circle text-secondary mr-2"></i>
Description
</h3>
<div class="prose max-w-none text-neutral leading-relaxed markdown-content" id="vulnDescription">
<!-- 动态渲染漏洞描述 -->
</div>
</div>
</div>
<!-- 右侧 CVSS 评分卡片(动态渲染) -->
<div class="bg-light rounded-lg p-5 border border-gray-200 w-full lg:w-auto flex-shrink-0">
<div class="text-sm text-neutral mb-1" data-i18n="cvss_base_score">CVSS v3.1 Base Score</div>
<div class="flex items-end gap-3 mb-2">
<span class="text-3xl font-bold text-white" id="cvssScore">?.?</span>
<span class="font-medium" id="cvssSeverity">???</span>
</div>
<div class="text-xs text-neutral">
<span class="font-medium" data-i18n="vector">Vector:</span> <span id="cvssVector">CVSS:3.1/??</span>
</div>
<!-- 评分图表(动态渲染) -->
<div class="mt-4 h-64">
<canvas id="cvssChart"></canvas>
</div>
</div>
</div>
</div>
<!-- 主要内容两栏布局(动态渲染) -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8">
<!-- 左侧主内容 -->
<div class="lg:col-span-2 space-y-8">
<!-- 受影响的产品(动态渲染) -->
<section class="bg-white rounded-xl shadow-soft p-6">
<h3 class="text-xl font-semibold mb-4 flex items-center" data-i18n="affected_products">
<i class="fa fa-exclamation-triangle text-warning mr-2"></i>
Affected Products
</h3>
<ul class="space-y-3 text-neutral" id="affectedProductsList">
<!-- 动态渲染受影响产品 -->
</ul>
</section>
<!-- 解决方案(动态渲染) -->
<section class="bg-white rounded-xl shadow-soft p-6">
<h3 class="text-xl font-semibold mb-4 flex items-center" data-i18n="solutions_mitigations">
<i class="fa fa-wrench text-success mr-2"></i>
Solutions and Mitigations
</h3>
<div class="prose max-w-none text-neutral markdown-content" id="solutionsContent">
<!-- 动态渲染解决方案 -->
</div>
</section>
<!-- 参考资料(动态渲染) -->
<section class="bg-white rounded-xl shadow-soft p-6">
<h3 class="text-xl font-semibold mb-4 flex items-center" data-i18n="references">
<i class="fa fa-external-link text-secondary mr-2"></i>
References
</h3>
<ul class="space-y-3 text-neutral" id="referencesList">
<!-- 动态渲染参考资料 -->
</ul>
</section>
</div>
<!-- 右侧边栏 -->
<div class="space-y-8">
<!-- 漏洞信息卡片(动态渲染) -->
<div class="bg-white rounded-xl shadow-soft p-6">
<h3 class="text-lg font-semibold mb-4 text-primary" data-i18n="vulnerability_details">Vulnerability Details</h3>
<div class="space-y-4 text-sm" id="vulnDetailsCard">
<!-- 动态渲染漏洞详情 -->
</div>
</div>
<!-- 相关SVE(动态渲染,无数据时显示提示) -->
<div class="bg-white rounded-xl shadow-soft p-6" id="relatedSvesContainer">
<h3 class="text-lg font-semibold mb-4 text-primary" data-i18n="related_sve_entries">Related SVE Entries</h3>
<div id="relatedSvesList">
<!-- 动态渲染相关SVE,无数据时显示提示 -->
</div>
<button class="mt-4 text-sm text-secondary hover:text-primary transition-colors font-medium hidden" id="viewAllRelatedBtn" data-i18n="view_all_related">
View All Related <i class="fa fa-angle-right ml-1"></i>
</button>
</div>
<!-- 订阅更新 --
<div class="bg-primary/5 rounded-xl p-6 border border-primary/10">
<h3 class="text-lg font-semibold mb-3 text-primary" data-i18n="get_updates">Get Updates</h3>
<p class="text-sm text-neutral mb-4" data-i18n="subscribe_desc">Subscribe to receive notifications about changes to this SVE entry.</p>
<form class="space-y-3">
<input type="email" placeholder="Your email address" class="w-full px-4 py-2 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-secondary/50 focus:border-secondary text-sm" data-i18n-placeholder="email_placeholder">
<button type="submit" class="w-full bg-secondary hover:bg-secondary/90 text-white font-medium py-2 px-4 rounded-lg transition-colors text-sm" data-i18n="subscribe">
Subscribe
</button>
</form>
</div-->
</div>
</div>
</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.</p>
<div class="flex space-x-4">
<a href="#" class="text-neutral hover:text-primary transition-colors">
<i class="fa-brands fa-twitter"></i>
</a>
<a href="https://www.gvsds.com/GVSDS/" class="text-neutral hover:text-primary transition-colors">
<i class="fa-brands fa-github"></i>
</a>
<a href="#" class="text-neutral hover:text-primary transition-colors">
<i class="fa-brands 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="cve_compatibility">CVE Compatibility</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=[WARNING]%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="https://doc.gvsds.com/6e845a45fc493c66a23a9361bce1464d" class="text-neutral hover:text-secondary transition-colors" data-i18n="security_policy" target="_blank">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">© 2025 SVE Database. All rights reserved.</p>
<div class="flex space-x-6 mt-4 md:mt-0 text-sm">
<a href="https://doc.gvsds.com/fc084ab20a283208adb19033ca4de173" target="_blank" class="text-neutral hover:text-secondary transition-colors" data-i18n="privacy_policy">Privacy Policy</a>
<a href="https://doc.gvsds.com/1f07d3b8cec43a2ab9892a15b150bdd6" target="_blank" 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/template.js"></script>
</body>
</html>