Skip to content

Commit 6b76358

Browse files
committed
Add anchor links to bounty page section headings
Allow direct linking to each section of the bug bounty policy (e.g. /bounty/#code-of-conduct). Anchors appear on hover.
1 parent eb8ff88 commit 6b76358

1 file changed

Lines changed: 27 additions & 9 deletions

File tree

src/pages/bounty.astro

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
3333
</p>
3434
</div>
3535

36-
<h2>Eligibility</h2>
36+
<h2 id="eligibility">Eligibility <a href="#eligibility" class="anchor-link">#</a></h2>
3737

3838
<p class="section-intro">Ledger Bug Bounty Program covers our hardware devices as well as our web services.</p>
3939

@@ -93,7 +93,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
9393
</div>
9494

9595
<div class="prose-section">
96-
<h2>Responsible Disclosure Policy</h2>
96+
<h2 id="responsible-disclosure-policy">Responsible Disclosure Policy <a href="#responsible-disclosure-policy" class="anchor-link">#</a></h2>
9797

9898
<p>
9999
At Ledger, we believe that Coordinated Vulnerability Disclosure is the right approach to
@@ -107,7 +107,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
107107
legal liability, so long as they follow responsible disclosure guidelines and principles.
108108
</p>
109109

110-
<h3>Guidelines</h3>
110+
<h3 id="guidelines">Guidelines <a href="#guidelines" class="anchor-link">#</a></h3>
111111

112112
<ul>
113113
<li>Do not engage in testing that degrades Ledger's information systems and products</li>
@@ -116,7 +116,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
116116
<li>Do not exploit vulnerabilities on our infrastructure — the Bounty Program is about improving security, not deliberately putting the community at risk</li>
117117
</ul>
118118

119-
<h2>Submission Process</h2>
119+
<h2 id="submission-process">Submission Process <a href="#submission-process" class="anchor-link">#</a></h2>
120120

121121
<p>
122122
Submission reports should include a detailed description of your discovery with clear,
@@ -151,7 +151,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
151151

152152
<p>The Ledger Security Team will be in touch, usually within 24 hours.</p>
153153

154-
<h2>Remediation & Disclosure</h2>
154+
<h2 id="remediation-disclosure">Remediation & Disclosure <a href="#remediation-disclosure" class="anchor-link">#</a></h2>
155155

156156
<p>
157157
After triage, we will send a quick acknowledgement and commit to being as transparent
@@ -163,7 +163,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
163163
fix issues within 90 days upon receipt of a vulnerability report.
164164
</p>
165165

166-
<h2>Reward</h2>
166+
<h2 id="reward">Reward <a href="#reward" class="anchor-link">#</a></h2>
167167

168168
<p>You may be eligible to receive a reward if:</p>
169169

@@ -182,7 +182,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
182182

183183
<p><strong>Bounties will be paid directly to the researcher using Bitcoin.</strong></p>
184184

185-
<h3>Eligibility Requirements</h3>
185+
<h3 id="eligibility-requirements">Eligibility Requirements <a href="#eligibility-requirements" class="anchor-link">#</a></h3>
186186

187187
<p>To be eligible for a reward, you must not:</p>
188188

@@ -194,7 +194,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
194194
<li>Be less than 18 years of age (if under 18, you must get your parents' or legal guardian's permission)</li>
195195
</ul>
196196

197-
<h2>Hall of Fame</h2>
197+
<h2 id="hall-of-fame">Hall of Fame <a href="#hall-of-fame" class="anchor-link">#</a></h2>
198198

199199
<p>
200200
In mutual consultation, we can, if you desire, display a researcher's name or its pseudonym
@@ -203,7 +203,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
203203
to the Devices Bug Bounty Program.
204204
</p>
205205

206-
<h2>Code of Conduct</h2>
206+
<h2 id="code-of-conduct">Code of Conduct <a href="#code-of-conduct" class="anchor-link">#</a></h2>
207207

208208
<ul>
209209
<li>Be kind</li>
@@ -384,6 +384,24 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
384384
font-style: italic;
385385
}
386386

387+
.anchor-link {
388+
color: var(--color-text-tertiary);
389+
text-decoration: none;
390+
font-weight: 400;
391+
margin-left: var(--space-2);
392+
opacity: 0;
393+
transition: opacity 0.2s ease;
394+
395+
&:hover {
396+
color: var(--color-accent-primary);
397+
}
398+
}
399+
400+
h2:hover .anchor-link,
401+
h3:hover .anchor-link {
402+
opacity: 1;
403+
}
404+
387405
.disclaimer {
388406
font-size: var(--text-sm);
389407
color: var(--color-text-tertiary);

0 commit comments

Comments
 (0)