Replace CDN React/ReactDOM/Babel with local libs; remove Babel and inline scripts Build Tailwind locally, add safelist; switch to assets/tailwind.css Self-host Font Awesome and Inter (CSS + woff2); remove external font CDNs Implement strict CSP (no unsafe-inline/eval; scripts/styles/fonts from self) Extract inline handlers; move PWA scripts to external files Add local QR code generation (qrcode lib) and remove api.qrserver.com Improve SessionTypeSelector visual selection (highlighted background and ring) Keep PWA working with service worker and offline assets Refs: CSP hardening, offline-first, no external dependencies
113 lines
6.3 KiB
HTML
113 lines
6.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta http-equiv="Content-Security-Policy"
|
|
content="default-src 'self';
|
|
script-src 'self' ;
|
|
style-src 'self';
|
|
font-src 'self' ;
|
|
connect-src 'self' https: ;
|
|
img-src 'self' data:;
|
|
media-src 'none';
|
|
object-src 'none';
|
|
frame-src 'none';">
|
|
<meta http-equiv="X-Content-Type-Options" content="nosniff">
|
|
<meta http-equiv="X-XSS-Protection" content="1; mode=block">
|
|
<meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin">
|
|
|
|
<!-- PWA Manifest -->
|
|
<link rel="manifest" href="./manifest.json">
|
|
<link rel="icon" type="image/x-icon" href="./logo/favicon.ico">
|
|
|
|
<!-- PWA Meta Tags -->
|
|
<meta name="mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="format-detection" content="telephone=no">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
<meta name="apple-mobile-web-app-title" content="SecureBit">
|
|
<meta name="application-name" content="SecureBit">
|
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
|
<meta name="msapplication-config" content="/browserconfig.xml">
|
|
|
|
<!-- iOS Splash Screens -->
|
|
<link rel="apple-touch-startup-image" href="./logo/splash/launch-640x1136.png"
|
|
media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
|
<link rel="apple-touch-startup-image" href="./logo/splash/launch-750x1334.png"
|
|
media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
|
<link rel="apple-touch-startup-image" href="./logo/splash/launch-1125x2436.png"
|
|
media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
|
<link rel="apple-touch-startup-image" href="./logo/splash/launch-1242x2688.png"
|
|
media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
|
|
|
<!-- Apple Touch Icons -->
|
|
<link rel="apple-touch-icon" href="./logo/icon-180x180.png">
|
|
<link rel="apple-touch-icon" sizes="57x57" href="./logo/icon-57x57.png">
|
|
<link rel="apple-touch-icon" sizes="60x60" href="./logo/icon-60x60.png">
|
|
<link rel="apple-touch-icon" sizes="72x72" href="./logo/icon-72x72.png">
|
|
<link rel="apple-touch-icon" sizes="76x76" href="./logo/icon-76x76.png">
|
|
<link rel="apple-touch-icon" sizes="114x114" href="./logo/icon-114x114.png">
|
|
<link rel="apple-touch-icon" sizes="120x120" href="./logo/icon-120x120.png">
|
|
<link rel="apple-touch-icon" sizes="144x144" href="./logo/icon-144x144.png">
|
|
<link rel="apple-touch-icon" sizes="152x152" href="./logo/icon-152x152.png">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="./logo/icon-180x180.png">
|
|
|
|
<!-- Microsoft Tiles -->
|
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
|
<meta name="msapplication-TileImage" content="./logo/icon-144x144.png">
|
|
<meta name="msapplication-config" content="./browserconfig.xml">
|
|
|
|
<!-- Theme colors -->
|
|
<meta name="theme-color" content="#ff6b35">
|
|
<meta name="msapplication-navbutton-color" content="#ff6b35">
|
|
|
|
<!-- Security Headers for PWA -->
|
|
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' ; style-src 'self' ; font-src 'self' ; connect-src 'self' https: wss: ws:; img-src 'self' data: https:; media-src 'none'; object-src 'none'; frame-src 'none'; worker-src 'self';">
|
|
|
|
|
|
<!-- GitHub Pages SEO -->
|
|
<meta name="description" content="SecureBit.chat v4.02.985 — P2P messenger with ECDH + DTLS + SAS security, 18-layer military-grade cryptography, and Lightning Network payments">
|
|
<meta name="keywords" content="P2P messenger, ECDH, DTLS, SAS, encryption, Lightning Network, WebRTC, privacy, ASN.1 validation, military-grade security, 18-layer defense, MITM protection">
|
|
<meta name="author" content="Volodymyr">
|
|
<link rel="canonical" href="https://github.com/SecureBitChat/securebit-chat/">
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:title" content="SecureBit.chat - Enhanced Security Edition">
|
|
<meta property="og:description" content="The first P2P messenger with Lightning Network payments">
|
|
<meta property="og:url" content="https://github.com/SecureBitChat/securebit-chat/">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:image" content="https://github.com/SecureBitChat/securebit-chat/favicon.ico">
|
|
|
|
<!-- Twitter Card -->
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="SecureBit.chat - Enhanced Security Edition">
|
|
<meta name="twitter:description" content="P2P messenger with military-grade cryptography">
|
|
|
|
<title>SecureBit.chat - Enhanced Security Edition</title>
|
|
<script src="libs/react/react.production.min.js"></script>
|
|
<script src="libs/react-dom/react-dom.production.min.js"></script>
|
|
<link rel="stylesheet" href="assets/tailwind.css">
|
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico">
|
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
|
<link rel="preload" href="/assets/fontawesome/webfonts/fa-solid-900.woff2" as="font" type="font/woff2" crossorigin>
|
|
<link rel="preload" href="/assets/fontawesome/webfonts/fa-regular-400.woff2" as="font" type="font/woff2" crossorigin>
|
|
<link rel="preload" href="/assets/fontawesome/webfonts/fa-brands-400.woff2" as="font" type="font/woff2" crossorigin>
|
|
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
|
<link rel="stylesheet" href="src/styles/main.css">
|
|
<link rel="stylesheet" href="src/styles/animations.css">
|
|
<link rel="stylesheet" href="src/styles/components.css">
|
|
<script src="src/scripts/fa-check.js"></script>
|
|
<script type="module" src="dist/qr-local.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<script type="module" src="dist/app.js"></script>
|
|
<script type="module" src="dist/app-boot.js"></script>
|
|
|
|
<script src="src/scripts/pwa-register.js"></script>
|
|
<script src="./src/pwa/install-prompt.js" type="module"></script>
|
|
<script src="./src/pwa/pwa-manager.js" type="module"></script>
|
|
<link rel="stylesheet" href="./src/styles/pwa.css">
|
|
</body>
|
|
</html> |