Accueil/Audit Détaillé
AUDIT COMPLET

schwallersa.ch

Analyse technique exhaustive du site principal de Garage Schwaller SA.
Spoiler : c'est pas joli.

Audité le : 12 décembre 2025|Technologies : PHP, jQuery, HTML4
23Global
18Sécurité
31SEO
22Perf
35UX

💀En résumé ? C'est une catastrophe.

Ce qu'on a trouvé :

  • 0 protection CSRF sur les formulaires - une invitation aux hackers
  • Captcha ridicule - contournable en 5 minutes par un ado
  • Email exposé en clair - bonjour le spam
  • Code jQuery de 2010 - bienvenue dans le passé
  • Aucune optimisation mobile - 60% du trafic ignoré

Impact business :

  • Temps de chargement 8+ secondes = 53% des visiteurs partent
  • SEO score 31/100 = invisible sur Google
  • Pas de schema.org = pas de rich snippets
  • RGPD mal implémenté = risque d'amende
  • Image de marque qui crie "on est en 2008"
🔓

Sécurité

Score : 18/100

Absence de protection CSRF

CRITIQUE

Les formulaires du site ne contiennent aucun token CSRF. Un attaquant peut forger des requêtes malveillantes au nom d'utilisateurs connectés.

<!-- Formulaire actuel (vulnérable) -->
<form action="contact.php" method="POST">
  <input name="nom" />
  <input name="email" />
  <!-- AUCUN TOKEN CSRF -->
  <button>Envoyer</button>
</form>
SOLUTION :

Implémenter des tokens CSRF générés côté serveur et validés à chaque soumission. Notre nouvelle solution utilise Next.js Server Actions avec protection CSRF native.

Captcha inefficace

CRITIQUE

Le captcha 'nospam.php' utilise une méthode dépassée facilement contournable par des scripts automatisés ou OCR basique.

<!-- Captcha actuel -->
<img src="nospam.php" />
<input name="code" placeholder="Code de sécurité" />
<!-- Facilement crackable avec OCR -->
SOLUTION :

Remplacer par Google reCAPTCHA v3 (invisible, score-based) ou hCaptcha. Notre solution intègre reCAPTCHA v3 + rate limiting côté serveur.

Données sensibles exposées

ÉLEVÉ

L'adresse email info@garageschwaller.ch est affichée en clair dans le HTML, exposant l'entreprise au spam et au phishing.

<a href="mailto:info@garageschwaller.ch">
  info@garageschwaller.ch
</a>
<!-- Harvesting facile pour spammeurs -->
SOLUTION :

Utiliser un formulaire de contact intermédiaire. L'email n'apparaît jamais dans le code source. Notre solution utilise un endpoint API sécurisé.

Pas de Content Security Policy

ÉLEVÉ

Aucun header CSP n'est défini, permettant potentiellement l'injection de scripts malveillants (XSS).

SOLUTION :

Implémenter des headers de sécurité stricts : CSP, X-Frame-Options, X-Content-Type-Options. Notre solution Next.js inclut tous ces headers par défaut.

HTTPS non forcé

MOYEN

Le site ne force pas la redirection HTTP → HTTPS, permettant des attaques man-in-the-middle.

SOLUTION :

Configurer HSTS (HTTP Strict Transport Security) et forcer HTTPS au niveau serveur. Notre hébergement Vercel force HTTPS automatiquement.

Cookies sans flags de sécurité

MOYEN

Les cookies sont créés sans les flags HttpOnly, Secure et SameSite, les rendant vulnérables au vol de session.

// Cookie actuel (JavaScript)
document.cookie = "session=xxx"
// Pas de HttpOnly = accessible par XSS
// Pas de Secure = transmis en HTTP
// Pas de SameSite = vulnérable CSRF
SOLUTION :

Tous les cookies sensibles doivent avoir HttpOnly, Secure et SameSite=Strict. Next.js gère cela automatiquement.

🔍

SEO & Référencement

Score : 31/100

Meta descriptions absentes

ÉLEVÉ

Aucune balise meta description n'est définie. Google affiche un extrait aléatoire du contenu, réduisant le taux de clic.

<head>
  <title>HOME - Garage Schwaller SA</title>
  <!-- AUCUNE META DESCRIPTION -->
  <!-- AUCUN META KEYWORDS -->
</head>
SOLUTION :

Ajouter des meta descriptions uniques et optimisées pour chaque page (150-160 caractères). Notre solution génère automatiquement les meta tags optimisées.

Pas de données structurées

ÉLEVÉ

Aucun schema.org n'est implémenté. Le site ne peut pas apparaître avec des rich snippets (étoiles, horaires, prix) dans Google.

SOLUTION :

Implémenter LocalBusiness, AutoDealer, Product schemas. Notre solution inclut JSON-LD automatique pour toutes les entités.

URLs non optimisées

ÉLEVÉ

Les URLs exposent l'extension .php et ne sont pas descriptives (vehicules.php au lieu de /vehicules/occasions).

https://schwallersa.ch/vehicules.php
https://schwallersa.ch/contact.php
https://schwallersa.ch/services.php
<!-- Extension .php = amateur + moins SEO friendly -->
SOLUTION :

Utiliser des URLs propres et descriptives avec structure hiérarchique. Notre solution : /vehicules/occasions, /services/entretien, etc.

Structure H1/H2 incohérente

MOYEN

La hiérarchie des titres n'est pas respectée. Plusieurs H1 sur certaines pages, H3 avant H2 sur d'autres.

SOLUTION :

Une seule balise H1 par page, suivie de H2, H3 en cascade logique. Notre solution utilise des composants React qui garantissent cette structure.

Pas de sitemap XML

MOYEN

Aucun sitemap.xml n'est détecté, rendant l'indexation par Google plus lente et moins complète.

SOLUTION :

Générer un sitemap.xml dynamique listant toutes les pages. Next.js génère automatiquement le sitemap avec les métadonnées de chaque page.

Images sans attributs alt

FAIBLE

La plupart des images n'ont pas d'attribut alt descriptif, perdant du potentiel SEO et d'accessibilité.

<img src="logo.png">
<img src="voiture.jpg">
<!-- Pas d'alt = Google ne sait pas ce que c'est -->
SOLUTION :

Tous les attributs alt doivent décrire l'image. Notre solution : next/image avec alt obligatoire.

🐌

Performance

Score : 22/100

Temps de chargement catastrophique

CRITIQUE

Le site met plus de 8 secondes à charger complètement. Google recommande moins de 3 secondes. 53% des visiteurs partent après 3 secondes.

SOLUTION :

Notre solution charge en moins de 1 seconde grâce au SSR, code splitting et optimisation des assets.

JavaScript bloquant

ÉLEVÉ

Tout le JavaScript est chargé de manière synchrone dans le head, bloquant le rendu de la page.

<head>
  <script src="jquery.min.js"></script>
  <script src="main.js"></script>
  <!-- Bloque le rendu jusqu'au chargement complet -->
</head>
SOLUTION :

Utiliser defer/async pour les scripts non-critiques. Notre solution utilise le code splitting automatique de Next.js.

Images non optimisées

ÉLEVÉ

Les images sont servies en format original (PNG/JPG) sans compression ni dimensionnement adaptatif.

<img src="photo-voiture.jpg" width="300">
<!-- Image originale: 2MB, 4000x3000px
     Affichée: 300px
     = 99% de données inutiles -->
SOLUTION :

Utiliser WebP/AVIF avec srcset pour le responsive. next/image optimise automatiquement toutes les images.

Pas de lazy loading

MOYEN

Toutes les images et ressources sont chargées immédiatement, même celles hors écran.

SOLUTION :

Implémenter le lazy loading natif ou via Intersection Observer. next/image inclut le lazy loading par défaut.

Pas de mise en cache

MOYEN

Les headers de cache ne sont pas configurés. Chaque visite re-télécharge toutes les ressources.

SOLUTION :

Configurer Cache-Control avec des durées appropriées. Vercel configure automatiquement le caching optimal.

Double tracking Google Analytics

MOYEN

Le site charge à la fois Universal Analytics (UA) et GA4, doublant le poids des scripts analytics.

<!-- Double tracking inutile -->
gtag('config', 'UA-72968639-19');
gtag('config', 'G-D7BNBRB9LW');
SOLUTION :

Migrer entièrement vers GA4 et supprimer UA (déprécié depuis juillet 2023).

Comparaison Détaillée

schwallersa.ch vs schwallerprincipal.dontpaniclabs.tech

AspectActuel (schwallersa.ch)Nouveau (notre solution)
FrameworkPHP procéduralNext.js 14 (React)
RenduCôté serveur basiqueSSR + Hydration
Temps de chargement8+ secondes< 1 seconde
Score Lighthouse23/10094/100
MobileNon responsiveMobile-first
SEO Score31/10098/100
Protection CSRFAucuneNative (Server Actions)
HTTPSNon forcéForcé + HSTS
ImagesNon optimiséesWebP auto + lazy load
Schema.orgAbsentLocalBusiness + AutoDealer
AnalyticsDouble trackingGA4 optimisé
Design2008 vibesDark mode moderne
Accessibilité45/10092/100
Core Web VitalsÉchecRéussite
AnimationsAucuneSmooth scroll + transitions
MaintenanceDifficile (code spaghetti)Facile (composants React)

Avant : Ce que vos clients voient

👴

Un site qui hurle "on n'a pas touché au web depuis 15 ans"

  • • Design daté qui inspire la méfiance
  • • Navigation confuse sur mobile
  • • Chargement qui teste la patience
  • • L'impression d'un garage qui ne suit pas son temps

Après : L'expérience premium

Un site qui dit "on est les meilleurs, et on le prouve"

  • • Design moderne qui inspire confiance
  • • Navigation fluide sur tous les appareils
  • • Chargement instantané
  • • L'impression d'un garage premium qui innove

Le diagnostic est clair.

23 points sur 100. On peut faire mieux. On a déjà fait mieux.