Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Update frontend/src/pages/Help.jsx
Browse files- frontend/src/pages/Help.jsx +69 -34
frontend/src/pages/Help.jsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
| 1 |
import React, { useState } from 'react';
|
|
|
|
| 2 |
|
| 3 |
export const Help = () => {
|
| 4 |
const [activeFaq, setActiveFaq] = useState(null);
|
|
@@ -21,8 +22,60 @@ export const Help = () => {
|
|
| 21 |
answer: "SPAs often handle routing dynamically on the client side, which can trick traditional scanners into thinking non-existent pages are real (Soft 404s). LarShield uses advanced baseline fingerprinting to minimize these, but if you notice recurring issues, please contact support."
|
| 22 |
},
|
| 23 |
{
|
| 24 |
-
question: "How
|
| 25 |
-
answer:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
}
|
| 27 |
];
|
| 28 |
|
|
@@ -63,44 +116,26 @@ export const Help = () => {
|
|
| 63 |
</button>
|
| 64 |
|
| 65 |
<div
|
| 66 |
-
className={`px-md overflow-hidden transition-all duration-300 ease-in-out ${activeFaq === index ? 'max-h-
|
| 67 |
>
|
| 68 |
-
<
|
| 69 |
-
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
</div>
|
| 72 |
</div>
|
| 73 |
))}
|
| 74 |
</div>
|
| 75 |
</div>
|
| 76 |
-
|
| 77 |
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-lg mb-xl">
|
| 78 |
-
<div className="bg-surface-container-lowest border border-outline-variant rounded-xl p-lg flex flex-col items-start gap-sm hover:shadow-md transition-shadow">
|
| 79 |
-
<div className="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center text-primary mb-xs">
|
| 80 |
-
<span className="material-symbols-outlined text-[28px]">book</span>
|
| 81 |
-
</div>
|
| 82 |
-
<h3 className="text-lg font-bold text-on-surface m-0">Documentation</h3>
|
| 83 |
-
<p className="text-on-surface-variant font-body-sm mb-md flex-1">
|
| 84 |
-
Dive deep into our API references, detailed scanner methodology, and integration guides.
|
| 85 |
-
</p>
|
| 86 |
-
<button className="text-primary font-label-md font-bold hover:underline bg-transparent border-0 cursor-pointer p-0 flex items-center gap-xs">
|
| 87 |
-
Read Docs <span className="material-symbols-outlined text-sm">arrow_forward</span>
|
| 88 |
-
</button>
|
| 89 |
-
</div>
|
| 90 |
-
|
| 91 |
-
<div className="bg-surface-container-lowest border border-outline-variant rounded-xl p-lg flex flex-col items-start gap-sm hover:shadow-md transition-shadow">
|
| 92 |
-
<div className="w-12 h-12 rounded-lg bg-secondary/10 flex items-center justify-center text-secondary mb-xs">
|
| 93 |
-
<span className="material-symbols-outlined text-[28px]">support_agent</span>
|
| 94 |
-
</div>
|
| 95 |
-
<h3 className="text-lg font-bold text-on-surface m-0">Contact Support</h3>
|
| 96 |
-
<p className="text-on-surface-variant font-body-sm mb-md flex-1">
|
| 97 |
-
Can't find what you're looking for? Our security experts are here to help you resolve any issues.
|
| 98 |
-
</p>
|
| 99 |
-
<button className="text-secondary font-label-md font-bold hover:underline bg-transparent border-0 cursor-pointer p-0 flex items-center gap-xs">
|
| 100 |
-
Submit a Ticket <span className="material-symbols-outlined text-sm">arrow_forward</span>
|
| 101 |
-
</button>
|
| 102 |
-
</div>
|
| 103 |
-
</div>
|
| 104 |
</div>
|
| 105 |
);
|
| 106 |
};
|
|
|
|
| 1 |
import React, { useState } from 'react';
|
| 2 |
+
import { Link } from 'react-router-dom';
|
| 3 |
|
| 4 |
export const Help = () => {
|
| 5 |
const [activeFaq, setActiveFaq] = useState(null);
|
|
|
|
| 22 |
answer: "SPAs often handle routing dynamically on the client side, which can trick traditional scanners into thinking non-existent pages are real (Soft 404s). LarShield uses advanced baseline fingerprinting to minimize these, but if you notice recurring issues, please contact support."
|
| 23 |
},
|
| 24 |
{
|
| 25 |
+
question: "How is the Security Risk Score calculated?",
|
| 26 |
+
answer: `This assessment utilizes an enterprise CVSS-weighted, category-capped vulnerability risk scoring algorithm. The score calculation is fully deterministic, auditable, and reproducible.
|
| 27 |
+
|
| 28 |
+
1. Severity Base Weights & Formula
|
| 29 |
+
Deduction per Finding = Severity Base Weight × [0.2 + 0.8 × (CVSS / 10)] × Confidence Multiplier
|
| 30 |
+
|
| 31 |
+
• Critical: 25.0 pts (CVSS Scaling Range: 0.20 - 1.00x) - Immediate threat to core business logic or full system compromise.
|
| 32 |
+
• High: 12.0 pts (CVSS Scaling Range: 0.20 - 1.00x) - Direct threat to application confidentiality or integrity.
|
| 33 |
+
• Medium: 4.0 pts (CVSS Scaling Range: 0.20 - 1.00x) - Indirect threat or security control misconfiguration.
|
| 34 |
+
• Low: 1.5 pts (CVSS Scaling Range: 0.20 - 1.00x) - Minor hardening flaw or minimal impact finding.
|
| 35 |
+
• Informational: 0.0 pts (CVSS Scaling Range: 0.00x) - Best practice advisory or design note.
|
| 36 |
+
|
| 37 |
+
2. Category Deduction Caps
|
| 38 |
+
To prevent non-exploitable misconfigurations from disproportionately penalizing the overall score, category deduction caps are enforced:
|
| 39 |
+
• Security Headers: 15.0 pts max (Capped)
|
| 40 |
+
• SSL/TLS Configuration: 15.0 pts max (Capped)
|
| 41 |
+
• HTTP Method Tampering: 12.0 pts max (Capped & Root-Cause Deduped)
|
| 42 |
+
• Cookie Security: 10.0 pts max (Capped)
|
| 43 |
+
• DNS Security: 10.0 pts max (Capped)
|
| 44 |
+
• Compliance Framework Signals: 0.0 pts (Unlinked — Reported Separately)
|
| 45 |
+
|
| 46 |
+
3. Graduated Confidence Multipliers & Posture Floor
|
| 47 |
+
• Confirmed / High: 1.00x Multiplier. Floor: 75 / 100 (Grade C) if 0 Critical & 0 Highs (≤ 15 Mediums).
|
| 48 |
+
• Likely: 0.60x Multiplier. Floor: 60 / 100 (Grade D) if 0 Critical & 0 Highs (> 15 Mediums).
|
| 49 |
+
• Medium: 0.50x Multiplier. Floor: 55 / 100 (Grade D) if 0 Criticals (≤ 15 Mediums).
|
| 50 |
+
• Low / Unconfirmed: 0.20x Multiplier. No Floor (Grade F) if 1+ Critical Vulnerability.
|
| 51 |
+
|
| 52 |
+
4. Worked Calculation Examples
|
| 53 |
+
Example 1: Application with 15 Missing Security Headers (Capped Deduction)
|
| 54 |
+
• Raw calculation: 15 × [4.0 × (0.2 + 0.8 × 0.53) × 1.0] = 37.4 pts.
|
| 55 |
+
• Category Cap applied: Security Headers deduction is capped at 15.0 pts max.
|
| 56 |
+
• Posture Floor rule: No Critical/High findings → Score = 100 - 15 = 85 / 100 (Grade B — Good).
|
| 57 |
+
|
| 58 |
+
Example 2: Audit with 1 High, 5 Mediums, and 1 Low Finding
|
| 59 |
+
• High (No Brute-Force, CVSS 7.5): 12.0 × (0.2 + 0.8 × 0.75) × 1.0 = 9.6 pts.
|
| 60 |
+
• Mediums (CORS, Cookie, DNS): Sum of capped category deductions = 15.8 pts.
|
| 61 |
+
• Low (Server Header): 1.5 × (0.2 + 0.8 × 0.31) × 1.0 = 0.7 pts.
|
| 62 |
+
• Total Deduction = 26.1 pts → Score = 100 - 26.1 = 74 / 100 (Grade C — Fair).
|
| 63 |
+
|
| 64 |
+
Example 3: Application with Critical Blind SQL Injection (CVSS 9.8)
|
| 65 |
+
• Critical (Blind SQLi, CVSS 9.8): 25.0 × (0.2 + 0.8 × 0.98) × 1.0 = 24.6 pts.
|
| 66 |
+
• High (Auth Bypass, CVSS 8.1): 12.0 × (0.2 + 0.8 × 0.81) × 1.0 = 10.2 pts.
|
| 67 |
+
• Total Deduction = 34.8 pts → Posture Floor Disabled (Critical Present).
|
| 68 |
+
• Final Score = 100 - 34.8 = 65 / 100 (Grade D — Poor).`
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
question: "Privacy Policy & Data Handling",
|
| 72 |
+
answer: `We are fully committed to protecting your data and privacy. We align our data collection and handling procedures with global standards, including GDPR, CCPA, and India's DPDP Act.
|
| 73 |
+
|
| 74 |
+
• Data Encryption: All vulnerability scan data is encrypted at rest (AES-256) and in transit (TLS 1.3).
|
| 75 |
+
• Audit Logs: To prevent abuse, we retain metadata regarding IP origins, target configurations, and timestamped actions.
|
| 76 |
+
• Third-Party Sharing: We do not sell or share your data with third parties for marketing purposes. Data is only shared with essential infrastructure providers or law enforcement if legally compelled.`,
|
| 77 |
+
linkText: "Read our full Privacy Policy",
|
| 78 |
+
linkUrl: "/legal/privacy"
|
| 79 |
}
|
| 80 |
];
|
| 81 |
|
|
|
|
| 116 |
</button>
|
| 117 |
|
| 118 |
<div
|
| 119 |
+
className={`px-md overflow-hidden transition-all duration-300 ease-in-out ${activeFaq === index ? 'max-h-[2000px] pb-md opacity-100' : 'max-h-0 opacity-0'}`}
|
| 120 |
>
|
| 121 |
+
<div className="border-t border-outline-variant/30 pt-sm">
|
| 122 |
+
<p className="text-on-surface-variant font-body-md leading-relaxed m-0 whitespace-pre-line">
|
| 123 |
+
{faq.answer}
|
| 124 |
+
</p>
|
| 125 |
+
{faq.linkUrl && (
|
| 126 |
+
<Link
|
| 127 |
+
to={faq.linkUrl}
|
| 128 |
+
className="inline-flex items-center gap-xs mt-md text-primary font-bold hover:underline font-label-md"
|
| 129 |
+
>
|
| 130 |
+
{faq.linkText} <span className="material-symbols-outlined text-sm">arrow_forward</span>
|
| 131 |
+
</Link>
|
| 132 |
+
)}
|
| 133 |
+
</div>
|
| 134 |
</div>
|
| 135 |
</div>
|
| 136 |
))}
|
| 137 |
</div>
|
| 138 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
</div>
|
| 140 |
);
|
| 141 |
};
|