惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
F
Full Disclosure
A
About on SuperTechFans
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
Know Your Adversary
Know Your Adversary
K
Kaspersky official blog
L
LINUX DO - 热门话题
Recorded Future
Recorded Future
C
Cisco Blogs
M
MIT News - Artificial intelligence
T
Tenable Blog
G
GRAHAM CLULEY
月光博客
月光博客
Recent Announcements
Recent Announcements
V
Visual Studio Blog
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
T
Threat Research - Cisco Blogs
D
DataBreaches.Net
P
Privacy International News Feed
P
Proofpoint News Feed
I
Intezer
博客园 - 叶小钗
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Hacker News
The Hacker News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - Franky
SecWiki News
SecWiki News
宝玉的分享
宝玉的分享
P
Palo Alto Networks Blog
Last Week in AI
Last Week in AI
小众软件
小众软件
Hacker News - Newest:
Hacker News - Newest: "LLM"
O
OpenAI News
N
News and Events Feed by Topic
Microsoft Security Blog
Microsoft Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
N
News and Events Feed by Topic
The Cloudflare Blog
Spread Privacy
Spread Privacy
酷 壳 – CoolShell
酷 壳 – CoolShell
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
B
Blog RSS Feed

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Site WordPress en panne ou piraté, la procédure que je suis pour diagnostiquer
Lyode freelance · 2026-06-15 · via DEV Community

Votre site WordPress ne répond plus. Écran blanc, message d'erreur, ou pire : des liens vers des pharmacies en ligne qui apparaissent dans Google à votre place. La première réaction est de paniquer et de cliquer partout. C'est exactement ce qu'il ne faut pas faire.

Je suis Sébastien, développeur WordPress freelance à Lyon. J'interviens régulièrement sur des sites cassés ou compromis, et dans 90 % des cas, le problème se règle avec une procédure méthodique. Voici celle que je suis, étape par étape.

Deux scénarios très différents se cachent derrière "mon site ne marche plus" :

  • La panne technique : le site affiche une erreur mais personne n'est entré. Souvent une mise à jour, une extension, un fichier corrompu.
  • Le piratage : quelqu'un a injecté du code, créé des pages, ou pris la main. Là, ce n'est plus du dépannage, c'est de la sécurité. On va traiter les deux. Mais d'abord, une règle commune.

Avant tout : ne supprimez rien

Le réflexe de tout effacer pour "repartir propre" est la pire idée. Vous détruisez les preuves, et si c'est un piratage, vous risquez de garder la faille tout en perdant les traces qui permettent de la trouver.

Première action, toujours : faites une sauvegarde de l'état actuel, même cassé. Fichiers et base de données. Via votre hébergeur, FTP, ou en ligne de commande si vous y avez accès :

# Sauvegarde de la base de données
mysqldump -u UTILISATEUR -p NOM_DE_LA_BASE > backup-avant-intervention.sql

# Archive des fichiers
tar -czf backup-fichiers.tar.gz /chemin/vers/votre/site

Maintenant, on diagnostique.


Cas 1 : le site est en panne

1. Est-ce votre site, ou tout l'hébergement ?

Avant de plonger dans WordPress, éliminez le plus simple. Si c'est l'hébergeur qui est down, vous allez chercher un bug pour rien.

  • Testez un autre site hébergé au même endroit, s'il y en a un.
  • Vérifiez la page de statut de votre hébergeur (la plupart en ont une).
  • Tapez votre nom de domaine dans un outil comme downforeveryoneorjustme.com pour voir si c'est vous ou tout le monde. Si tout l'hébergement est par terre, contactez le support et passez votre tour. Sinon, on continue.

2. Identifiez le symptôme exact

Le message d'erreur est votre meilleur ami. Notez précisément ce que vous voyez :

Symptôme Piste la plus probable
Écran totalement blanc Erreur PHP fatale, conflit d'extension ou mémoire
Erreur 500 Fichier .htaccess, PHP, ou extension qui plante
"Erreur de connexion à la base de données" Identifiants DB, serveur MySQL, table corrompue
Erreur 403 Permissions de fichiers ou règle de sécurité
Site bloqué en "maintenance" Fichier .maintenance laissé après une mise à jour ratée

Ce dernier cas est le plus rapide à régler : connectez-vous en FTP, supprimez le fichier .maintenance à la racine du site, et c'est réglé.

3. Activez le mode debug

Par défaut, WordPress masque les erreurs aux visiteurs. Pour voir ce qui se passe réellement, ouvrez le fichier wp-config.php (à la racine, via FTP) et ajoutez ces lignes avant la ligne /* That's all, stop editing! */ :

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );     // écrit les erreurs dans un fichier
define( 'WP_DEBUG_DISPLAY', false ); // ne les affiche pas aux visiteurs

Rechargez le site. Les erreurs s'écrivent maintenant dans wp-content/debug.log. Ouvrez-le : la dernière ligne pointe presque toujours vers le fichier ou l'extension fautive.

Pensez à remettre WP_DEBUG sur false une fois le problème réglé. On ne laisse jamais le debug actif en production.

4. Désactivez les extensions sans accès à l'admin

Si l'admin est inaccessible, vous ne pouvez pas désactiver les extensions depuis le tableau de bord. Passez par le FTP.

Renommez le dossier complet des extensions :

wp-content/plugins  →  wp-content/plugins-off

Votre site se recharge sans aucune extension. S'il revient à la vie, c'est une extension le coupable. Renommez le dossier à l'identique (plugins), puis réactivez les extensions une par une dans l'admin jusqu'à retrouver celle qui casse tout.

5. Repassez sur un thème par défaut

Même logique pour le thème. Renommez le dossier de votre thème actif dans wp-content/themes/. WordPress bascule automatiquement sur un thème par défaut (Twenty Twenty-Four ou similaire). Si le site repart, le problème vient de votre thème, souvent du fichier functions.php.

6. "Erreur de connexion à la base de données"

Ce message a trois causes classiques :

  1. Identifiants incorrects dans wp-config.php (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST). Vérifiez-les auprès de votre hébergeur, surtout après une migration.
  2. Serveur MySQL injoignable : trop de connexions, serveur surchargé. Côté hébergeur.
  3. Table corrompue. WordPress propose un outil de réparation. Ajoutez dans wp-config.php :
define( 'WP_ALLOW_REPAIR', true );

Puis visitez votre-site.fr/wp-admin/maint/repair.php, lancez la réparation, et retirez la ligne aussitôt après (sinon n'importe qui peut accéder à cet outil).

7. La mémoire PHP est saturée

L'écran blanc vient parfois d'une limite mémoire trop basse, surtout sur les sites un peu lourds. Augmentez-la dans wp-config.php :

define( 'WP_MEMORY_LIMIT', '256M' );

Si ça ne suffit pas, le réglage se fait au niveau de l'hébergement (php.ini ou panneau de l'hébergeur).


Cas 2 : le site est piraté

Ici, la logique change. On ne cherche plus à "réparer", on cherche à nettoyer et sécuriser. Et la règle d'or : tant que vous n'avez pas trouvé par où c'est entré, le site se fera repirater.

Les signes qui ne trompent pas

  • Des redirections vers des sites inconnus (pharmacie, casino, contrefaçon).
  • Des pages indexées dans Google que vous n'avez jamais créées.
  • Google ou votre navigateur affiche un avertissement "site dangereux".
  • Des comptes administrateurs que vous ne reconnaissez pas.
  • Des fichiers récemment modifiés alors que vous n'avez touché à rien.
  • Votre hébergeur vous a envoyé une alerte de sécurité. ## 1. Isolez le site

Mettez le site en mode maintenance (HTTP 503) pour stopper la propagation et éviter que vos visiteurs soient infectés ou redirigés pendant l'intervention. Si l'attaque est grave, demandez à votre hébergeur de couper l'accès public temporairement.

2. Lancez un scan

Installez un scanner reconnu (depuis l'admin, ou en FTP si l'admin est bloqué) :

  • Wordfence : la référence gratuite, scan approfondi.
  • MalCare : scan côté serveur, très rapide.
  • Sucuri : bon pour le scan distant et la blacklist Google. Le scan vous liste les fichiers modifiés, les fichiers inconnus, et les injections suspectes. C'est votre carte du champ de bataille.

3. Traquez les fichiers récemment modifiés

Si vous avez un accès SSH, c'est l'outil le plus efficace. Listez tous les fichiers PHP modifiés ces 7 derniers jours :

find . -type f -name "*.php" -mtime -7 -ls

Et repérez les motifs typiques du code malveillant (code obfusqué, exécution déguisée) :

grep -rEl "eval\(|base64_decode\(|gzinflate\(|str_rot13\(" wp-content/

Ces fonctions ont parfois des usages légitimes, mais combinées et planquées dans wp-content/uploads/, elles sont presque toujours le signe d'une porte dérobée.

4. Remplacez le cœur, ne le réparez pas

N'essayez pas de "nettoyer" les fichiers du cœur de WordPress un par un. Remplacez-les en bloc par les versions officielles. Avec WP-CLI :

# Vérifie quels fichiers du cœur ont été altérés
wp core verify-checksums

# Réinstalle le cœur proprement, sans toucher à vos contenus
wp core download --force --skip-content

Faites pareil pour vos extensions et thèmes : réinstallez-les depuis les sources officielles plutôt que de tenter de les désinfecter.

5. Comptes fantômes, clés et mots de passe

Trois actions non négociables :

  1. Supprimez les comptes administrateurs inconnus. Vérifiez aussi la table wp_users directement, certains pirates créent des admins invisibles dans l'interface.
  2. Régénérez les clés de sécurité (SALT). Récupérez un nouveau jeu sur https://api.wordpress.org/secret-key/1.1/salt/ et remplacez le bloc correspondant dans wp-config.php. Ça déconnecte toutes les sessions actives, y compris celle du pirate.
  3. Changez tous les mots de passe : admin WordPress, base de données, FTP, et compte d'hébergement. ## 6. Nettoyez la base de données

Le code malveillant ne vit pas que dans les fichiers. Inspectez la table wp_options (lignes siteurl, home, scripts injectés), les articles et pages contenant du JavaScript suspect, et les entrées de spam. Un plugin comme Wordfence repère une partie de ces injections, mais une vérification manuelle reste souvent nécessaire.

7. Demandez le réexamen à Google

Si Google a blacklisté votre site, la dernière étape est de demander un réexamen via la Google Search Console, dans la section Sécurité et actions manuelles. À ne faire qu'après un nettoyage complet : si la moindre trace subsiste, Google maintiendra l'avertissement plus longtemps. Le centre de recherche Google propose un guide officiel dédié aux sites piratés, à lire avant la demande.


Quand passer la main

Vous pouvez gérer beaucoup de choses seul avec cette procédure. Mais certains signaux indiquent qu'il vaut mieux ne pas insister :

  • Vous avez nettoyé, et le piratage revient quelques jours plus tard. La faille est toujours là.
  • Le site est un e-commerce ou traite des données clients (enjeu RGPD, obligation de déclaration à la CNIL en cas de fuite).
  • Vous n'avez pas de sauvegarde propre et le nettoyage manuel touche des fichiers que vous ne maîtrisez pas.
  • Le site est blacklisté et chaque jour hors ligne vous coûte du chiffre d'affaires.
  • Vous n'êtes simplement pas à l'aise avec le FTP, la base de données ou la ligne de commande, et une erreur peut aggraver la situation. Dans ces cas, un nettoyage approximatif coûte plus cher qu'une intervention propre, parce qu'il laisse une porte ouverte.

J'interviens sur ce type de situation, en dépannage ponctuel comme en suivi régulier. Si vous êtes face à un site cassé ou compromis :

- Pour éviter d'en arriver là : un contrat de maintenance (mises à jour, sauvegardes, surveillance) règle 90 % de ces incidents en amont 👉 Maintenance WordPress à Lyon

Pour aller plus loin

La meilleure procédure de diagnostic reste celle qu'on n'a jamais à utiliser. La plupart des pannes et piratages que je traite auraient été évités par quelques bons réflexes :

Post not found or has been removed.

Et vous, quel a été votre pire incident WordPress ? Racontez en commentaire, c'est toujours instructif de comparer les diagnostics.


Sébastien, développeur WordPress freelance à Lyon. J'aide les TPE et PME à construire, optimiser et maintenir des sites fiables. En savoir plus sur lyode.fr.