Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
7 changes: 5 additions & 2 deletions src/pages/trust/ja/threatmodel.astro
Original file line number Diff line number Diff line change
Expand Up @@ -746,14 +746,17 @@ for (const b of trustBoundaries) {
function getRiskColor(risk) {
switch (risk) { case 'Critical': return '#ef4444'; case 'High': return '#f97316'; case 'Medium': return '#eab308'; case 'Low': return '#22c55e'; default: return '#6b7280'; }
}
function escapeHtml(s) {
return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}
function showThreatDetail(threatId) {
var threat = threats.find(function(t) { return t.id === threatId; });
if (!threat) return;
document.getElementById('detailId').textContent = threat.id + ' \u2022 ' + threat.tactic;
document.getElementById('detailTitle').textContent = threat.name;
var rc = getRiskColor(threat.risk);
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + threat.risk + ' ' + detailLabels.riskSuffix + '</span><a href="https://atlas.mitre.org/techniques/' + threat.atlas + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + threat.atlas + '</a>';
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">' + detailLabels.description + '</div><div class="detail-value">' + threat.description + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.attackVector + '</div><div class="detail-value">' + threat.attackVector + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.affected + '</div><div class="detail-value">' + threat.affected + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.mitigations + '</div><div class="detail-value">' + threat.mitigations + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.residualRisk + '</div><div class="detail-value">' + threat.residualRisk + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.recommendations + '</div><div class="detail-value">' + threat.recommendations + '</div></div>';
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + escapeHtml(threat.risk) + ' ' + escapeHtml(detailLabels.riskSuffix) + '</span><a href="https://atlas.mitre.org/techniques/' + escapeHtml(threat.atlas) + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + escapeHtml(threat.atlas) + '</a>';
Comment thread
vercel[bot] marked this conversation as resolved.
Outdated
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.description) + '</div><div class="detail-value">' + escapeHtml(threat.description) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.attackVector) + '</div><div class="detail-value">' + escapeHtml(threat.attackVector) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.affected) + '</div><div class="detail-value">' + escapeHtml(threat.affected) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.mitigations) + '</div><div class="detail-value">' + escapeHtml(threat.mitigations) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.residualRisk) + '</div><div class="detail-value">' + escapeHtml(threat.residualRisk) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.recommendations) + '</div><div class="detail-value">' + escapeHtml(threat.recommendations) + '</div></div>';
document.getElementById('detailOverlay').classList.add('active');
document.querySelectorAll('.threat-card').forEach(function(c) { c.classList.remove('selected'); });
var sel = document.querySelector('[data-threat-id="' + threatId + '"]');
Expand Down
7 changes: 5 additions & 2 deletions src/pages/trust/ko/threatmodel.astro
Original file line number Diff line number Diff line change
Expand Up @@ -746,14 +746,17 @@ for (const b of trustBoundaries) {
function getRiskColor(risk) {
switch (risk) { case 'Critical': return '#ef4444'; case 'High': return '#f97316'; case 'Medium': return '#eab308'; case 'Low': return '#22c55e'; default: return '#6b7280'; }
}
function escapeHtml(s) {
return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}
function showThreatDetail(threatId) {
var threat = threats.find(function(t) { return t.id === threatId; });
if (!threat) return;
document.getElementById('detailId').textContent = threat.id + ' \u2022 ' + threat.tactic;
document.getElementById('detailTitle').textContent = threat.name;
var rc = getRiskColor(threat.risk);
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + threat.risk + ' ' + detailLabels.riskSuffix + '</span><a href="https://atlas.mitre.org/techniques/' + threat.atlas + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + threat.atlas + '</a>';
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">' + detailLabels.description + '</div><div class="detail-value">' + threat.description + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.attackVector + '</div><div class="detail-value">' + threat.attackVector + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.affected + '</div><div class="detail-value">' + threat.affected + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.mitigations + '</div><div class="detail-value">' + threat.mitigations + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.residualRisk + '</div><div class="detail-value">' + threat.residualRisk + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.recommendations + '</div><div class="detail-value">' + threat.recommendations + '</div></div>';
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + escapeHtml(threat.risk) + ' ' + escapeHtml(detailLabels.riskSuffix) + '</span><a href="https://atlas.mitre.org/techniques/' + escapeHtml(threat.atlas) + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + escapeHtml(threat.atlas) + '</a>';
Comment thread
vercel[bot] marked this conversation as resolved.
Outdated
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.description) + '</div><div class="detail-value">' + escapeHtml(threat.description) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.attackVector) + '</div><div class="detail-value">' + escapeHtml(threat.attackVector) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.affected) + '</div><div class="detail-value">' + escapeHtml(threat.affected) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.mitigations) + '</div><div class="detail-value">' + escapeHtml(threat.mitigations) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.residualRisk) + '</div><div class="detail-value">' + escapeHtml(threat.residualRisk) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.recommendations) + '</div><div class="detail-value">' + escapeHtml(threat.recommendations) + '</div></div>';
document.getElementById('detailOverlay').classList.add('active');
document.querySelectorAll('.threat-card').forEach(function(c) { c.classList.remove('selected'); });
var sel = document.querySelector('[data-threat-id="' + threatId + '"]');
Expand Down
7 changes: 5 additions & 2 deletions src/pages/trust/threatmodel.astro
Original file line number Diff line number Diff line change
Expand Up @@ -745,14 +745,17 @@ for (const b of trustBoundaries) {
function getRiskColor(risk) {
switch (risk) { case 'Critical': return '#ef4444'; case 'High': return '#f97316'; case 'Medium': return '#eab308'; case 'Low': return '#22c55e'; default: return '#6b7280'; }
}
function escapeHtml(s) {
return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}
function showThreatDetail(threatId) {
var threat = threats.find(function(t) { return t.id === threatId; });
if (!threat) return;
document.getElementById('detailId').textContent = threat.id + ' \u2022 ' + threat.tactic;
document.getElementById('detailTitle').textContent = threat.name;
var rc = getRiskColor(threat.risk);
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + threat.risk + ' Risk</span><a href="https://atlas.mitre.org/techniques/' + threat.atlas + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + threat.atlas + '</a>';
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">Description</div><div class="detail-value">' + threat.description + '</div></div><div class="detail-section"><div class="detail-label">Attack Vector</div><div class="detail-value">' + threat.attackVector + '</div></div><div class="detail-section"><div class="detail-label">Affected Components</div><div class="detail-value">' + threat.affected + '</div></div><div class="detail-section"><div class="detail-label">Current Mitigations</div><div class="detail-value">' + threat.mitigations + '</div></div><div class="detail-section"><div class="detail-label">Residual Risk</div><div class="detail-value">' + threat.residualRisk + '</div></div><div class="detail-section"><div class="detail-label">Recommendations</div><div class="detail-value">' + threat.recommendations + '</div></div>';
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + escapeHtml(threat.risk) + ' Risk</span><a href="https://atlas.mitre.org/techniques/' + escapeHtml(threat.atlas) + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + escapeHtml(threat.atlas) + '</a>';
Comment thread
vercel[bot] marked this conversation as resolved.
Outdated
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">Description</div><div class="detail-value">' + escapeHtml(threat.description) + '</div></div><div class="detail-section"><div class="detail-label">Attack Vector</div><div class="detail-value">' + escapeHtml(threat.attackVector) + '</div></div><div class="detail-section"><div class="detail-label">Affected Components</div><div class="detail-value">' + escapeHtml(threat.affected) + '</div></div><div class="detail-section"><div class="detail-label">Current Mitigations</div><div class="detail-value">' + escapeHtml(threat.mitigations) + '</div></div><div class="detail-section"><div class="detail-label">Residual Risk</div><div class="detail-value">' + escapeHtml(threat.residualRisk) + '</div></div><div class="detail-section"><div class="detail-label">Recommendations</div><div class="detail-value">' + escapeHtml(threat.recommendations) + '</div></div>';
document.getElementById('detailOverlay').classList.add('active');
document.querySelectorAll('.threat-card').forEach(function(c) { c.classList.remove('selected'); });
var sel = document.querySelector('[data-threat-id="' + threatId + '"]');
Expand Down
7 changes: 5 additions & 2 deletions src/pages/trust/zh-cn/threatmodel.astro
Original file line number Diff line number Diff line change
Expand Up @@ -746,14 +746,17 @@ for (const b of trustBoundaries) {
function getRiskColor(risk) {
switch (risk) { case 'Critical': return '#ef4444'; case 'High': return '#f97316'; case 'Medium': return '#eab308'; case 'Low': return '#22c55e'; default: return '#6b7280'; }
}
function escapeHtml(s) {
return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}
function showThreatDetail(threatId) {
var threat = threats.find(function(t) { return t.id === threatId; });
if (!threat) return;
document.getElementById('detailId').textContent = threat.id + ' \u2022 ' + threat.tactic;
document.getElementById('detailTitle').textContent = threat.name;
var rc = getRiskColor(threat.risk);
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + threat.risk + ' ' + detailLabels.riskSuffix + '</span><a href="https://atlas.mitre.org/techniques/' + threat.atlas + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + threat.atlas + '</a>';
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">' + detailLabels.description + '</div><div class="detail-value">' + threat.description + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.attackVector + '</div><div class="detail-value">' + threat.attackVector + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.affected + '</div><div class="detail-value">' + threat.affected + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.mitigations + '</div><div class="detail-value">' + threat.mitigations + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.residualRisk + '</div><div class="detail-value">' + threat.residualRisk + '</div></div><div class="detail-section"><div class="detail-label">' + detailLabels.recommendations + '</div><div class="detail-value">' + threat.recommendations + '</div></div>';
document.getElementById('detailBadges').innerHTML = '<span class="detail-badge" style="background:' + rc + '12;color:' + rc + '">' + escapeHtml(threat.risk) + ' ' + escapeHtml(detailLabels.riskSuffix) + '</span><a href="https://atlas.mitre.org/techniques/' + escapeHtml(threat.atlas) + '" target="_blank" class="detail-badge atlas-link" style="background:rgba(255,90,54,0.08)">' + escapeHtml(threat.atlas) + '</a>';
Comment thread
vercel[bot] marked this conversation as resolved.
Outdated
document.getElementById('detailBody').innerHTML = '<div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.description) + '</div><div class="detail-value">' + escapeHtml(threat.description) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.attackVector) + '</div><div class="detail-value">' + escapeHtml(threat.attackVector) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.affected) + '</div><div class="detail-value">' + escapeHtml(threat.affected) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.mitigations) + '</div><div class="detail-value">' + escapeHtml(threat.mitigations) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.residualRisk) + '</div><div class="detail-value">' + escapeHtml(threat.residualRisk) + '</div></div><div class="detail-section"><div class="detail-label">' + escapeHtml(detailLabels.recommendations) + '</div><div class="detail-value">' + escapeHtml(threat.recommendations) + '</div></div>';
document.getElementById('detailOverlay').classList.add('active');
document.querySelectorAll('.threat-card').forEach(function(c) { c.classList.remove('selected'); });
var sel = document.querySelector('[data-threat-id="' + threatId + '"]');
Expand Down
Loading