Edwin Noorlander bfd6989060 Add comprehensive security hardening and penetration testing suite
- Fix XSS vulnerability in language parameter with whitelist validation
- Add input sanitization for page parameters (HTML escaping, path traversal protection)
- Implement security headers (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy)
- Block PHP execution in content directory via router protection
- Add parameter length limits (255 chars max)
- Remove X-Powered-By header to prevent version disclosure
- Include automated penetration test suite (40+ security tests)
- Add comprehensive security documentation and test reports

Security improvements protect against XSS, path traversal, code injection,
command injection, template injection, and information disclosure attacks.
All 30 penetration tests pass with 100/100 security score.
2025-11-24 16:03:22 +01:00
2025-11-21 20:23:20 +01:00
2025-11-22 15:45:26 +01:00
2025-11-21 20:23:20 +01:00

CodePress CMS

Een lichtgewicht, file-based content management systeem gebouwd met PHP.

Features

  • 📝 Multi-format Content - Ondersteunt Markdown, PHP en HTML bestanden
  • 🧭 Dynamic Navigation - Automatische menu generatie met dropdowns
  • 🔍 Search Functionality - Volledige tekst zoek door alle content
  • 🧭 Breadcrumb Navigation - Intuïtieve navigatiepaden
  • 🔗 Auto-linking - Automatische links tussen pagina's
  • 📱 Responsive Design - Werkt perfect op alle apparaten
  • ⚙️ JSON Configuratie - Eenvoudige configuratie via JSON
  • 🎨 Bootstrap 5 - Moderne UI framework
  • 🔒 Security - Beveiligde content management

🚀 Quick Start

  1. Upload bestanden naar webserver
  2. Stel permissies in voor webserver
  3. Configureer (optioneel) via config.json
  4. Bezoek website via browser

📁 Project Structuur

codepress/
├── engine/
│   ├── core/
│   │   ├── config.php          # Configuratie loader
│   │   └── index.php          # CMS engine
│   └── templates/               # Template bestanden
│       ├── layout.mustache
│       ├── assets/
│       │   ├── header.mustache
│       │   ├── navigation.mustache
│       │   └── footer.mustache
│       ├── markdown_content.mustache
│       ├── php_content.mustache
│       └── html_content.mustache
├── content/                   # Content bestanden
│   ├── map1/
│   │   ├── pagina1.md
│   │   └── pagina2.php
│   └── homepage.md
├── public/                     # Web root
│   ├── assets/
│   │   ├── css/
│   │   ├── js/
│   │   └── favicon.svg
│   └── index.php
├── config.json                 # Configuratie
└── README.md

⚙️ Configuratie

Basis Configuratie (config.json)

{
    "site_title": "CodePress",
    "content_dir": "content",
    "templates_dir": "engine/templates",
    "default_page": "auto",
    "homepage": "homepage",
    "author": {
        "name": "Edwin Noorlander",
        "website": "https://noorlander.info",
        "git": "https://git.noorlander.info/E.Noorlander/CodePress.git"
    },
    "seo": {
        "description": "CodePress CMS - Lightweight file-based content management system",
        "keywords": "cms, php, content management, file-based"
    }
}

Configuratie Opties

  • site_title - Naam van de website
  • content_dir - Map met content bestanden
  • templates_dir - Map met template bestanden
  • default_page - Standaard pagina ("auto" voor automatische detectie)
  • homepage - Homepage ("auto" voor automatische detectie)
  • author - Auteur informatie met links
  • seo - SEO instellingen

📝 Content Types

Markdown (.md)

  • Auto-linking tussen pagina's
  • GitHub Flavored Markdown ondersteuning
  • Syntax highlighting voor code blocks
  • Automatische titel extractie

PHP (.php)

  • Volledige PHP ondersteuning
  • Dynamische content generatie
  • Database integratie mogelijk
  • Session management beschikbaar

HTML (.html)

  • Statische HTML pagina's
  • Bootstrap componenten
  • Custom CSS en JavaScript
  • Volledige HTML5 validatie

🎨 Design Features

Navigation

  • Tab-style navigatie met Bootstrap
  • Dropdown menus voor mappen en sub-mappen
  • Home knop met icoon
  • Active state indicatie
  • Responsive hamburger menu

Layout

  • Flexbox layout voor moderne structuur
  • Fixed header met logo en zoekfunctie
  • Breadcrumb navigatie tussen header en content
  • Fixed footer met metadata
  • Scrollable content gebied

Responsive

  • Mobile-first aanpak
  • Touch-friendly interactie
  • Adaptieve breedtes
  • Consistente ervaring

🔧 Vereisten

  • PHP 8.4+ of hoger
  • Webserver (Apache, Nginx, etc.)
  • Schrijfrechten voor PHP bestanden
  • Mod_rewrite (optioneel voor pretty URLs)

🛠️ Installatie

Via Composer

composer create-project codepress
cd codepress

Handmatig

  1. Download de bestanden
  2. Upload naar webserver
  3. Stel permissies in
  4. Configureer config.json

Webserver Configuratie

Apache

<Directory "/var/www/codepress">
    AllowOverride All
    Require all granted
</Directory>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

Nginx

server {
    root /var/www/codepress/public;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
}

🏗️ PHP Classes

SimpleTemplate Class

Lightweight template rendering engine die Mustache-style syntax ondersteunt zonder externe dependencies.

Methods:

  • render($template, $data) - Rendert template met data
  • replacePartial($matches) - Vervangt {{>partial}} placeholders

Features:

  • {{>partial}} - Partial includes
  • {{#variable}}...{{/variable}} - Conditionele blocks
  • {{^variable}}...{{/variable}} - Negatieve conditionele blocks
  • {{{variable}}} - Unescaped HTML content
  • {{variable}} - Escaped content

CodePressCMS Class

Hoofd CMS class die alle content management functionaliteit beheert.

Public Methods:

  • __construct($config) - Initialiseer CMS met configuratie
  • getPage() - Haalt huidige pagina content op
  • getMenu() - Genereert navigatiestructuur
  • render() - Rendert volledige pagina met templates

Private Methods:

  • buildMenu() - Bouwt menu structuur van content directory
  • scanDirectory($dir, $prefix) - Scant directory voor content
  • performSearch($query) - Voert zoekopdracht uit
  • parseMarkdown($content) - Converteert Markdown naar HTML
  • parsePHP($filePath) - Verwerkt PHP bestanden
  • parseHTML($content) - Verwerkt HTML bestanden
  • getBreadcrumb() - Genereert breadcrumb navigatie
  • renderMenu($items, $level) - Rendert menu HTML
  • getContentType($page) - Bepaalt content type
  • autoLinkPageTitles($content) - Auto-link pagina titels

Features:

  • Multi-format content support (MD, PHP, HTML)
  • Dynamische navigatie met dropdowns
  • Zoekfunctionaliteit met snippets
  • Breadcrumb navigatie
  • Auto-linking tussen pagina's
  • File metadata tracking
  • Responsive template rendering

📖 Documentatie

🤝 Bijdragen

Bijdragen zijn welkom! Zie AGENTS.md voor ontwikkelrichtlijnen.

📄 Licentie

Open-source licentie. Zie de repository voor meer informatie.


Gebouwd met ❤️ door Edwin Noorlander

Description
No description provided
Readme 2.8 MiB
Languages
PHP 60.2%
JavaScript 16.6%
Shell 12.3%
Mustache 8.1%
SCSS 2.4%
Other 0.4%