ASI Security
Plugin WordPress de sécurité : blocage basique des injections SQL et protection CSRF côté admin.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/yoalgrin/wordpress-asi-security/archive/refs/heads/main.zipASI Security est un plugin WordPress d’apprentissage dédié à l’exploration de mécanismes de sécurité Web : détection de patterns SQLi, journalisation en base, vérification CSRF côté admin et gestion optionnelle d’un mode XSS.
Contexte
Ce plugin a été initialement développé dans un cadre pédagogique pour comprendre :
le fonctionnement interne des hooks WordPress, l’utilisation sécurisée de l’API wpdb, la validation/sanitization des entrées, et la mise en place d’un cycle de vie complet de plugin (activation / désinstallation propre). Au fil des tests, des limites ont été identifiées (regex insuffisantes, faux positifs…) et le plugin a été étendu avec : un système de logs détaillés en base, une whitelist IP / User-Agent, un mode “Log only”, une interface d’administration,
plusieurs niveaux de sensibilité.
⚠️ Note importante:
Ce plugin est un outil pédagogique et ne remplace pas un WAF, un reverse proxy (ModSecurity) ou les mécanismes natifs de protection (requêtes préparées, ORM…). Il illustre des concepts, il ne cherche pas à couvrir l’ensemble des problématiques de sécurité WordPress.
🚀 Installation (développeur·euse)
- Cloner le dépôt dans
wp-content/plugins/asi-security:cd wp-content/plugins git clone <URL_DU_DEPOT> asi-security - Aller dans l’admin WordPress → Extensions → Activer “ASI Security”.
🧪 En local (WAMP/MAMP/Laragon/Docker)
- Place le dossier du plugin dans
wp-content/plugins/de ton WordPress local. - Active le plugin depuis l’admin.
- Regarde le fichier principal :
asi-security-plugin/anti-sqli/anti-sqli.php
📁 Contenu du dépôt
asi-security-plugin/
anti-sqli/
anti-sqli.php
doc.text
uninstall.php
admin/
class-asi-admin.php
index.php
views/
csrf-page.php
index.php
settings-page.php
includes/
class-asi-activator.php
class-asi-deactivator.php
class-asi-guard.php
handlers.php
helpers.php
index.php
⚙️ Compatibilité
- WordPress 6.x
- PHP 8.x
📝 Développement
- Code simple, lisible, sans dépendances.
- N’hésite pas à ouvrir une issue pour signaler un bug ou proposer une amélioration.
🧩 TODO / Améliorations prévues
Pistes d’amélioration et correctifs identifiés lors d’un audit rapide. J’ajoute pour chaque item une courte note sur la priorité (H = haute, M = moyenne, L = faible).
- [ ] Corriger la whitelist (
helpers.php) : incohérence entre clésip_whitelist/whitelist_ips. - [ ] Unifier le Text Domain (
asi-security) et charger viaload_plugin_textdomain(). - [ ] Sécuriser les actions admin avec
current_user_can()+check_admin_referer(). - [ ] Ajouter un mode "Log only" (enregistrer sans bloquer).
- [ ] Ajouter un niveau de sensibilité (Off / Log / Block / Paranoid).
- [ ] Exporter les logs en CSV depuis la page d’admin.
- [ ] Ajouter des nonces sur tous les formulaires pour éviter le CSRF.
- [ ] Mettre à jour la documentation TESTS.md avec les cas d’essai (SQLi, CSRF, whitelist).
- [ ] Captures d’écran : interface admin + page des logs.
- [ ] Option “Settings” sur la ligne du plugin dans l’admin WordPress.
- [ ] Refactor regex SQLi pour réduire les faux positifs.
📄 Licence
MIT — fais-en bon usage avec attribution.
Auteur : GVG — v1.0.0