You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.2 KiB
3.2 KiB
title | description | navigation | date | img | tags |
---|---|---|---|---|---|
Personal Website | An open-source content management system, used for this website. | false | 2021-03-03 | /img/personal-website/admin-menu.png | [PHP 7 MySQL jQuery Software] |
Open-source content management system.
Repository at
GitHub{target="_blank"},
GitLab{target="_blank"} or
Gitea{target="_blank"}.
This is the CMS that is used for this website! It's written in PHP 7, MySQL and jQuery, with the libraries Klein.php and Mailer.
Features:
- PHP 7
- Composer
- MVC design pattern
- MySQL database for storing data
- CMS with CRUD functions for managing data
- ORM for mapping between PHP classes and data
- Login system
- Stay logged in using cookies
- Forget password with a generated link send using mail
- Security mitigations
- Password hashing using BCrypt
- Per-user cryptographically secure generated salt
- SQL injection protection using prepared statements
- XSS
- Cookies set to 'HttpOnly'
- Escape rendered user input using:
htmlentities(ENT_QUOTES | ENT_HTML5, 'UTF-8');
- CSRF
- Cookies 'SameSite' set to 'Strict'
- Token for each session used in POST/PUT/DELETE requests
- Bootstrap
- jQuery
Directory structure:
.
├── app
│ ├── classes
│ │ └── <classes>
│ ├── controllers
│ │ └── <controllers>
│ ├── helper.php
│ ├── model
│ │ └── <models>
│ ├── seed.php
│ ├── traits
│ │ └── Log.php
│ └── views
│ └── <views>
├── composer.json
├── config.php
├── config.php.example
├── public
│ ├── index.php
│ └── <files>
├── route.php
├── syncconfig.sh
├── syncconfig.sh.example
└── sync.sh
Some of the pages of the CMS.