- 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.
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
- Upload bestanden naar webserver
- Stel permissies in voor webserver
- Configureer (optioneel) via
config.json - 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 websitecontent_dir- Map met content bestandentemplates_dir- Map met template bestandendefault_page- Standaard pagina ("auto"voor automatische detectie)homepage- Homepage ("auto"voor automatische detectie)author- Auteur informatie met linksseo- 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
- Download de bestanden
- Upload naar webserver
- Stel permissies in
- 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 datareplacePartial($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 configuratiegetPage()- Haalt huidige pagina content opgetMenu()- Genereert navigatiestructuurrender()- Rendert volledige pagina met templates
Private Methods:
buildMenu()- Bouwt menu structuur van content directoryscanDirectory($dir, $prefix)- Scant directory voor contentperformSearch($query)- Voert zoekopdracht uitparseMarkdown($content)- Converteert Markdown naar HTMLparsePHP($filePath)- Verwerkt PHP bestandenparseHTML($content)- Verwerkt HTML bestandengetBreadcrumb()- Genereert breadcrumb navigatierenderMenu($items, $level)- Rendert menu HTMLgetContentType($page)- Bepaalt content typeautoLinkPageTitles($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
- Handleiding (NL) - Gedetailleerde handleiding
- Handleiding (EN) - English documentation
- AGENTS.md - Ontwikkelaar instructies
🤝 Bijdragen
Bijdragen zijn welkom! Zie AGENTS.md voor ontwikkelrichtlijnen.
📄 Licentie
Open-source licentie. Zie de repository voor meer informatie.
🔗 Links
- Website: https://noorlander.info
- Repository: https://git.noorlander.info/E.Noorlander/CodePress.git
- Issues: https://git.noorlander.info/E.Noorlander/CodePress/issues
Gebouwd met ❤️ door Edwin Noorlander
Description
Languages
PHP
60.2%
JavaScript
16.6%
Shell
12.3%
Mustache
8.1%
SCSS
2.4%
Other
0.4%