166 Commits

Author SHA1 Message Date
dillard 3afe3b7698 Security hardening: CSRF, rate limiting, session/password policy, audit log
Fixes critical pre-existing issues found during review: bulk_action.php had no
auth check at all (unauthenticated download/delete of any qrcode) and built a
table name from unwhitelisted user input (SQL injection); the QR generator
classes wrote files from unvalidated filename/format, allowing path traversal
and arbitrary file writes. Also pins chillerlan/php-qrcode to 5.0.5 since
master now requires PHP 8.4, breaking the PHP 8.3 build.

- CSRF tokens on all POST forms and the bulk_action.php JSON endpoint
- Login rate limiting (5 attempts / 15 min) via new login_attempts table
- Hardened sessions: httponly/samesite cookies, 30 min idle timeout,
  session regeneration on login
- Forced password change for the default superadmin/superadmin account
- Server-side validation in Users/DynamicQrcode/Qrcode classes
- Audit log table for auth, user, and qrcode actions
- Checked-in db schema (db/init.sql, migrations/) instead of relying on an
  opaque prebuilt db image
- Production docker-compose with Nginx + php-fpm instead of the PHP dev server
2026-07-08 15:00:33 +02:00
Giandonato Inverso 8db3158239 Remove unnecessary extra information from documentation 2025-09-02 21:56:03 +02:00
Giandonato Inverso b3b799819e Delete support section from index.html 2025-09-02 21:53:41 +02:00
Giandonato Inverso f89b39bde3 Remove donation button from README 2025-09-02 21:52:03 +02:00
Giandonato Inverso acb154502b Merge pull request #144 from CLAlberto/master
fix(read.php): replace deprecated FILTER_SANITIZE_STRING for PHP 8.3 …
2025-05-08 08:56:07 +02:00
CLAlberto f24a7086ab fix(read.php): replace deprecated FILTER_SANITIZE_STRING for PHP 8.3 compatibility
### Problem

The usage of `FILTER_SANITIZE_STRING` in `read.php` causes a deprecation warning in PHP 8.1 and breaks functionality entirely in PHP 8.3, as the constant was removed.

### Solution

This commit replaces:
```php
filter_input(INPUT_GET, 'id', FILTER_SANITIZE_STRING);



with a safer and future-proof alternative:

$id = filter_input(INPUT_GET, 'id', FILTER_UNSAFE_RAW);
$id = trim(strip_tags($id));


> _Thanks for maintaining this project! Happy to contribute._ 😊
2025-05-06 16:16:22 +02:00
Giandonato Inverso 2f0c879158 Merge pull request #143 from angelosleebos/patch-1
Make environment variables compatible for other platforms
2025-04-14 12:19:34 +02:00
Giandonato Inverso 2ce6a03921 Merge pull request #142 from rafinou62/patch-1
Update read.php prevent SQL Injection & XSS attacks
2025-04-14 12:18:32 +02:00
Angelo Sleebos 40ec07fbb1 Make environment variables compatible for other platforms
Make environment variables compatible for other platforms
2025-04-07 01:11:17 +02:00
Raphaël Wanecque 6cfbc4a759 Update read.php prevent SQL Injection & XSS attacks 2025-03-26 17:04:33 +01:00
giandonato.inverso@edempg.it 3ee79bfab7 edit demo url 2025-03-22 15:51:02 +01:00
giandonato.inverso@edempg.it a2fdf79491 config rollback 2025-03-20 23:38:55 +01:00
giandonato.inverso@edempg.it 236d7342d3 Merge remote-tracking branch 'origin/master' 2025-03-19 23:40:50 +01:00
giandonato.inverso@edempg.it 1f3110b26e bug fix Class Qrcode not found 2025-03-19 23:40:36 +01:00
Giandonato Inverso 8b24fd839d Merge pull request #136 from MickGe/patch-1
add cookies secure flags
2025-02-09 16:16:53 +01:00
MickGe 011e91e3d0 add cookies secure flags 2025-02-07 11:35:24 +01:00
giandonato.inverso@edempg.it 737ceca97b updated readme and docs 2025-01-21 22:41:14 +01:00
giandonato.inverso@edempg.it b4b42ddb29 updated readme 2025-01-12 23:50:15 +01:00
giandonato.inverso@edempg.it 3ca4163715 Local setup eliminated and documentation updated 2025-01-12 23:48:49 +01:00
giandonato.inverso@edempg.it c5f1b0d74f Merge remote-tracking branch 'origin/master' 2025-01-12 19:48:31 +01:00
Giandonato Inverso d825f597b8 Merge pull request #130 from Shineson1001/feature/129-QRCodeGeneratorSwitch
🐛 Global switch for the QR code generator (#129)
2025-01-02 12:04:55 +01:00
Shine 850f5e5c52 🐛 Global switch for the QR code generator (#129) 2024-12-31 20:48:56 +01:00
giandonato.inverso@edempg.it c46dae55ce Revert "Revert "Instead using external API (api.qrserver.com) .. use chillerlan/php-qrcode""
This reverts commit 4d33cf5379.
2024-12-23 18:52:11 +01:00
giandonato.inverso@edempg.it 4d33cf5379 Revert "Instead using external API (api.qrserver.com) .. use chillerlan/php-qrcode"
This reverts commit 6d42677732.
2024-12-23 18:49:05 +01:00
Giandonato Inverso a1bd583ad3 Merge pull request #128 from Shineson1001/feature/116-EventIncorrectTimeZone
🐛 Event: Incorrect Time Zone
2024-12-20 20:02:32 +01:00
Shine 597afbb1fe 🐛 Event: Incorrect Time Zone
- Add "Time zone" input field.
- 24-Hour time format.
- Set Min-Year and Max-Year dynamically
2024-12-19 22:34:42 +01:00
Giandonato Inverso 5028541bfd Merge pull request #127 from Shineson1001/feature/88-SelfHostedQRCodeGenerator
Instead using external API (api.qrserver.com) .. use chillerlan/php-qrcode
2024-12-15 16:35:29 +01:00
Shine 6d42677732 Instead using external API (api.qrserver.com) .. use chillerlan/php-qrcode 2024-12-15 14:36:39 +01:00
Giandonato Inverso 1499f06c71 Merge pull request #126 from Shineson1001/feature/2FA-QRCodes
Add 2FA QR Code
2024-12-14 09:17:50 +01:00
Shine 058277c0fc Add 2FA QR Code
Save your 2FA secrets to QR-Code.
2024-12-13 23:42:57 +01:00
Giandonato Inverso a426d45be1 available plugins 2024-10-20 16:32:58 +02:00
Giandonato Inverso 3f7ac0bce1 Update README.md 2024-10-20 11:07:12 +02:00
giandonato.inverso@edempg.it 9548a6d73a bug fix in helpers.php 2024-04-21 12:55:03 +02:00
giandonato.inverso@edempg.it 2715f2106c edit readme 2024-04-21 12:38:35 +02:00
giandonato.inverso@edempg.it e43e8f774e bug fix 2024-04-18 20:54:04 +02:00
giandonato.inverso@edempg.it acebfdd708 fix in bulk action 2024-04-18 20:44:22 +02:00
giandonato.inverso@edempg.it 005c67d721 readme 2024-04-18 20:35:04 +02:00
giandonato.inverso@edempg.it 9f2d14abf8 bug fix in read.php, bump version in footer, NEW: bulk delete 2024-04-18 20:33:20 +02:00
giandonato.inverso@edempg.it eba0ebbba7 bug fix database prefix in Qrcode class 2024-03-11 15:43:16 +01:00
giandonato.inverso@edempg.it 068ddebd35 bug fix bulk download 2024-03-04 14:36:18 +01:00
Giandonato Inverso d0d3daf7db Merge pull request #94 from tranmh/xss_static_qrcode
Fix Security: Stored Cross Site Scripting for static QR code
2024-03-01 09:58:29 +01:00
Minh Cuong Tran 92eb66fb35 Fix Security: Stored Cross Site Scripting for static QR code, see https://github.com/giandonatoinverso/PHP-Dynamic-Qr-code/issues/93 2024-03-01 08:03:31 +01:00
Giandonato Inverso b85f98e16d Merge pull request #92 from tranmh/fix_remove_DATABASE_PREFIX_for_getOne
Inconsistency of using DATABASE_PREFIX with getOne()
2024-02-29 00:25:17 +01:00
Minh Cuong Tran a7953f05bb Inconsistency of using DATABASE_PREFIX with getOne() 2024-02-28 16:56:39 +01:00
Giandonato Inverso 06ddd19378 Merge pull request #91 from tranmh/mixed_content_blocked
fix: mixed content blocked for http and https
2024-02-28 14:16:21 +01:00
Minh Cuong Tran 2b6c802659 fix mixed content blocked for http and https: Mixed Content: The page at 'https://localhost/qrcode/dynamic_qrcodes.php' was loaded over HTTPS, but requested an insecure stylesheet 'http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css'. This request has been blocked; the content must be served over HTTPS. 2024-02-28 13:55:44 +01:00
Giandonato Inverso 33651fcabb Merge pull request #90 from tranmh/fix_case_sensitive_filename
Fix case sensitive filename
2024-02-27 13:25:17 +01:00
Minh Cuong Tran b496e51ace fix: case sensitive for filename 2024-02-27 13:18:52 +01:00
Minh Cuong Tran 1217e32856 fix: case sensitive for filename 2024-02-27 13:18:01 +01:00
Giandonato Inverso 6646cc9545 increased size of column link - dynamic qrcode
increased size of column link - dynamic qrcode
2024-02-14 23:58:00 +01:00
Giandonato Inverso 915ea383b7 Update README.md
updated php version requirement
2024-01-03 00:43:50 +01:00
Giandonato Inverso 93980efdb7 Update README.md 2023-10-30 17:02:13 +01:00
Giandonato Inverso b52a61ca40 bug fix redirect url with docker installation 2023-10-17 23:24:34 +02:00
Giandonato Inverso c9fa6abf06 bug fix 2023-10-17 00:41:15 +02:00
Giandonato Inverso 15c84c0863 bug fix and documentation 2023-10-16 22:57:16 +02:00
Giandonato Inverso 90a7b2890b updated documentation 2023-10-16 22:24:15 +02:00
Giandonato Inverso 03da2d0432 updated documentation 2023-10-16 20:56:06 +02:00
Giandonato Inverso 68a2b9f7f3 Refactoring docker image building, NEW: added docker compose support
Signed-off-by: giandonato.inverso@edempg.it <giandonato.inverso@studenti.unimi.it>
2023-10-16 19:49:29 +02:00
Giandonato Inverso 5335b6fb7e readme updated
Signed-off-by: giandonato.inverso@edempg.it <giandonato.inverso@studenti.unimi.it>
2023-10-16 13:15:53 +02:00
giandonato.inverso@edempg.it fadde16882 readme updated
Signed-off-by: giandonato.inverso@edempg.it <giandonato.inverso@studenti.unimi.it>
2023-10-16 13:15:07 +02:00
Giandonato Inverso 575a6b3caa refactoring of table database, added script for upgrading to versions >= 2.0, added multi-user support
Signed-off-by: giandonato.inverso@edempg.it <giandonato.inverso@studenti.unimi.it>
2023-10-16 13:10:57 +02:00
Giandonato Inverso cdab7df35d readme updated
Signed-off-by: giandonato.inverso@edempg.it <giandonato.inverso@studenti.unimi.it>
2023-10-16 01:43:56 +02:00
Giandonato Inverso 9a0a2c7928 eliminazione file superflui, spostamento file read.php all'interno del progetto, aggiunta astrazione classe Qrcode, miglioramento download bulk, refactoring generale
Signed-off-by: giandonato.inverso@edempg.it <giandonato.inverso@studenti.unimi.it>
2023-10-16 01:41:27 +02:00
Giandonato Inverso 995272fa8d Bug fix login.php
removed .min extension adminlte js file
2023-09-16 14:51:04 +02:00
Giandonato Inverso ef6410253c paypal donations 2023-09-05 23:31:38 +02:00
Giandonato Inverso f9ad48f65a Update README.md 2023-09-05 23:29:51 +02:00
giandonato.inverso@edempg.it 4b28c09d49 Merge remote-tracking branch 'origin/master' 2023-08-22 17:15:09 +02:00
giandonato.inverso@edempg.it d14ec02e4e doc update
Signed-off-by: giandonato.inverso@edempg.it <Zannabianca20>
2023-08-22 17:14:52 +02:00
Giandonato Inverso c87a99a067 Update Dockerfile 2023-01-25 18:51:10 +01:00
Giandonato Inverso eb3c275035 Merge pull request #52 from AyhamAl-Ali/fix/db_prefix
🚀 Fix DB Prefix in `read.php`
2023-01-25 18:50:15 +01:00
Ayham Al-Ali e448066176 Fix DB Prefix 2023-01-25 20:47:52 +03:00
Giandonato Inverso abd55062f3 Merge pull request #45 from chilluniverse/patch-1
DATABASE_HOST
2022-10-14 10:36:59 +02:00
Pascal e99e97cae2 DATABASE_HOST
In the docker-compose.yml is the Database_Host defined as "mariadb". If Host is not changed in the environment.php to "mariadb" as well the setup will fail
2022-10-14 01:26:06 +02:00
giandonato.inverso@edempg.it 6d1c3ac7c4 new version dockerfile 2022-09-28 16:23:44 +02:00
giandonato.inverso@edempg.it e2d9aad91f new version dockerfile 2022-09-28 16:22:18 +02:00
Giandonato Inverso fa709c95db Merge pull request #37 from 0xRenegade/feature/download-multiple-qr-img-at-once
Error Message for no qrcodes selected.
2022-09-24 22:43:16 +02:00
0xRenegade 8cb8e36114 Error Message for no qrcodes selected. 2022-09-24 15:40:56 -05:00
Giandonato Inverso c3225c6f3f Merge pull request #36 from 0xRenegade/feature/download-multiple-qr-img-at-once
Feature/download multiple qr img at once
2022-09-24 22:26:36 +02:00
0xRenegade 9cf354910b download multiple qrcodes at once feature 2022-09-24 15:14:20 -05:00
0xRenegade a18657994e add base_url() function in helpers, works with https and port number 2022-09-24 14:32:04 -05:00
0xRenegade 4b5c9a800b adds in custom.css for, well, custom styles. 2022-09-24 13:09:17 -05:00
Giandonato Inverso a85cee4fda Merge pull request #35 from 0xRenegade/issue-30/update-docker-yml-for-db-prefix
Issue 30/update docker yml for db prefix
2022-09-24 19:44:31 +02:00
Giandonato Inverso 327cadaddb Merge pull request #33 from 0xRenegade/QOL/ignore-env-and-use-example-instead
QOL/ignore env and use example instead
2022-09-24 19:44:23 +02:00
0xRenegade 4da9be3e3e update docker-compose.yml for database prefix option 2022-09-24 12:19:40 -05:00
0xRenegade b26c905b2e update docs for this change 2022-09-24 11:52:34 -05:00
0xRenegade f458094e0d update main gitignore to add in environment.php 2022-09-24 11:44:02 -05:00
0xRenegade b16f30b5a3 move env to example, so we don't run into merge conflicts constantly 2022-09-24 11:42:17 -05:00
0xRenegade f072f151fd Merge pull request #1 from giandonatoinverso/master
sync master branch with remote
2022-09-24 11:28:55 -05:00
Giandonato Inverso 38ddbe43c7 Merge pull request #31 from 0xRenegade/renegade/general-fixes
general fixes, fixed database prefix during install
2022-09-24 11:53:34 +02:00
0xRenegade 9799509ff6 set static attribute of class rather than non-DRY code 2022-09-24 00:24:03 -05:00
0xRenegade f0d43fd18b remove error_log debugging 2022-09-24 00:05:50 -05:00
0xRenegade 5e531f4e15 updated MysqliDb class functions to handle prefix properly. 2022-09-23 23:44:01 -05:00
0xRenegade a0944afd3c if this feature is accepted in Pull Request, will need to add this back 2022-09-23 23:02:05 -05:00
0xRenegade 9b61284a1e Merge branch 'renegade/general-fixes' of github.com:0xRenegade/PHP-Dynamic-Qr-code into renegade/general-fixes 2022-09-23 23:01:05 -05:00
0xRenegade 70ec7afc90 some queries are manually entered, which aren't picked up by 'prefix' class attribute in database class 2022-09-23 22:59:53 -05:00
0xRenegade 1934c78251 Merge branch 'master' into renegade/general-fixes 2022-09-23 21:05:16 -05:00
0xRenegade 8f053474e7 added in prefix by default, oops. 2022-09-23 21:00:41 -05:00
0xRenegade b80636049f Issue #30: Fixes database_prefix option during install 2022-09-23 20:55:55 -05:00
Giandonato Inverso a8e4cf18ff Update config.php 2022-09-24 03:24:15 +02:00
Giandonato Inverso 418215cd23 Update docker-compose.yml 2022-09-24 03:23:41 +02:00
Giandonato Inverso 8bbb4354c0 Update environment.php 2022-09-24 03:23:20 +02:00
0xRenegade 2057df1924 missing scroll bar on documentation page sidebar 2022-09-23 20:09:22 -05:00
Giandonato Inverso b457823654 Update add_dynamic_form.php
added support for http url
2022-09-10 11:50:19 +02:00
Giandonato Inverso 02754fba37 Update MysqliDb.php
fix deprecated implode()
2022-09-05 20:40:26 +02:00
Giandonato Inverso 25add5b7fd Merge pull request #25 from nirpt/master
docker build now supports app release version code.
2022-08-29 14:09:34 +02:00
nirpt 2aa867aa2a Docker build with app version added. 2022-08-29 12:32:20 +02:00
nirpt 9cbf68a99e Merge remote-tracking branch 'origin/master'
# Conflicts:
#	docker/README.md
2022-08-28 13:22:12 +02:00
Giandonato Inverso dfaee77d86 Update README.md 2022-08-28 12:33:14 +02:00
Giandonato Inverso 59c6dc9233 doc update
Signed-off-by: giandonato.inverso@edempg.it <Zannabianca20>
2022-08-28 12:04:48 +02:00
Giandonato Inverso c3e04a4357 new installation process via script, elimination of data entry form for installation
Signed-off-by: giandonato.inverso@edempg.it <Zannabianca20>
2022-08-28 11:57:31 +02:00
nirpt 97da7f0d4f Minor refactor and cleanup 2022-08-28 11:29:20 +02:00
Giandonato Inverso 4dd7f9ab25 configuration file modification, docker environment variable support 2022-08-28 11:24:32 +02:00
Giandonato Inverso 3000271d95 Merge pull request #23 from nirpt/master
docker support added
2022-08-28 10:47:05 +02:00
nirpt 1194259e6e docker support added 2022-08-28 10:24:07 +02:00
Giandonato Inverso 5f1534f0be Update README.md 2022-06-17 11:49:06 +02:00
Giandonato Inverso c76c1164fc Update README.md 2022-06-17 11:48:44 +02:00
Giandonato Inverso c8b3bba9f0 Merge pull request #16 from neoteknic/patch-1
Fix php 8.1 warning in form field
2022-02-22 16:55:19 +01:00
neoteknic 10091ac8e4 Update filters.php
Fix php 8.1 warning in form field
2022-02-22 16:22:13 +01:00
Giandonato Inverso a6bf0d6ca9 Add files via upload 2020-09-08 18:43:51 +02:00
Giandonato Inverso 44e8465129 Add files via upload 2020-09-08 18:42:29 +02:00
Giandonato Inverso cd00141252 Add files via upload 2020-09-08 18:41:51 +02:00
Giandonato Inverso 0ca8bd7cb2 Add files via upload 2020-09-08 18:30:32 +02:00
Giandonato Inverso 554a27762d Add files via upload 2020-09-08 18:28:26 +02:00
Giandonato Inverso 36c52ba003 Add files via upload 2020-09-08 18:22:57 +02:00
Giandonato Inverso 773d4960fd Add files via upload 2020-09-08 18:20:38 +02:00
Giandonato Inverso 7757bcf76b Add files via upload 2020-09-08 18:17:08 +02:00
Giandonato Inverso 76883de681 Add files via upload 2020-09-08 18:15:54 +02:00
Giandonato Inverso 8d45a02149 Add files via upload 2020-09-08 18:13:36 +02:00
Giandonato Inverso d3e11399f7 Add files via upload 2020-09-08 18:11:37 +02:00
Giandonato Inverso 86f32b6327 Add files via upload 2020-09-08 18:09:19 +02:00
Giandonato Inverso 97df13f3f0 Add files via upload 2020-09-08 18:06:28 +02:00
Giandonato Inverso 4ac9cd811a Add files via upload 2020-09-08 17:59:49 +02:00
Giandonato Inverso 1968201a48 Add files via upload 2020-09-08 17:59:21 +02:00
Giandonato Inverso b39c88fc12 Update README.md 2020-09-08 17:31:01 +02:00
Giandonato Inverso 9118d4f33c Update README.md 2020-09-08 17:29:26 +02:00
Giandonato Inverso f8bc49c164 Update README.md 2020-09-08 17:26:41 +02:00
Giandonato Inverso 9db2388d51 Update README.md 2020-09-08 17:25:38 +02:00
Giandonato Inverso 03c9c2d720 Update README.md 2020-09-08 17:24:07 +02:00
Giandonato Inverso 3bb2545521 Update README.md 2020-09-08 17:23:38 +02:00
Giandonato Inverso 283df4b81c Update README.md 2020-09-08 17:23:17 +02:00
Giandonato Inverso e64ca74003 Update README.md 2020-09-08 17:23:02 +02:00
Giandonato Inverso 0c2988791f Update README.md 2020-09-08 17:22:41 +02:00
Giandonato Inverso e123385dac Update README.md 2020-09-08 17:22:25 +02:00
Giandonato Inverso 1c819e6626 Update README.md 2020-09-08 17:21:33 +02:00
Giandonato Inverso 8af83452ba Update README.md 2020-09-08 17:21:07 +02:00
Giandonato Inverso 527eb7b3ba Update README.md 2020-09-08 17:20:39 +02:00
Giandonato Inverso fe4c63e3a6 Update README.md 2020-09-08 17:20:20 +02:00
Giandonato Inverso 601be05d5c Update README.md 2020-09-08 17:20:05 +02:00
Giandonato Inverso f4f061d857 Update README.md 2020-09-08 17:18:41 +02:00
Giandonato Inverso f1eb8545b4 Update README.md 2020-09-08 17:17:36 +02:00
Giandonato Inverso 7e3cef7544 Update README.md 2020-09-08 17:14:57 +02:00
Giandonato Inverso 5530f62195 Update README.md 2020-09-08 17:13:33 +02:00
Giandonato Inverso df3211d583 Update README.md 2020-09-08 17:13:06 +02:00
Giandonato Inverso 117b2b21a2 Update README.md 2020-09-08 17:12:50 +02:00
Giandonato Inverso 5430504fa0 Update README.md 2020-09-08 17:12:34 +02:00
Giandonato Inverso 65c279b65d Update README.md 2020-09-08 17:12:01 +02:00
Giandonato Inverso ceda04f97e Update README.md 2020-09-08 17:11:45 +02:00
Giandonato Inverso 76cad846f9 Update README.md 2020-09-08 17:11:27 +02:00
Giandonato Inverso f0d187f8b7 Update README.md 2020-09-08 17:10:01 +02:00
Giandonato Inverso fefac0fa9f Update README.md 2020-09-08 17:09:36 +02:00
Giandonato Inverso 6f920aec63 Update README.md 2020-09-08 17:09:15 +02:00
Giandonato Inverso ab7a82edbf Update README.md 2020-09-08 17:08:42 +02:00
Giandonato Inverso 7e867ddf9d Update README.md 2020-09-08 17:07:06 +02:00
Giandonato Inverso 255201169f Update README.md 2020-09-08 17:06:25 +02:00
Giandonato Inverso ca0108c247 Update README.md 2020-09-08 17:05:43 +02:00
Giandonato Inverso 23864047ce Initial commit 2020-09-08 16:56:05 +02:00

Diff Content Not Available