json.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. require_once "../env.inc.php";
  3. require_once "../conf.inc.php";
  4. require_once DIR_PHP_LAYOUTS . "header.php";
  5. secureSession::start();
  6. require_once "../access.inc.php";
  7. require_once DIR_PHP_LAYOUTS . "events.session.php";
  8. // Validation CSRF pour les requêtes JSON POST
  9. if ($_SERVER['REQUEST_METHOD'] === 'POST' && core::ifGet("jsonData")) {
  10. $jsonData = core::getGet("jsonData");
  11. // Actions nécessitant une protection CSRF (login exclu car action publique pré-authentification)
  12. $csrfProtectedActions = ['logout', 'inscription', 'validation'];
  13. if (in_array($jsonData, $csrfProtectedActions)) {
  14. if (!csrf::validateHeader('events-ajax', 'X-CSRF-Token')) {
  15. error_log("CSRF validation failed for JSON action: $jsonData from IP: " . ($_SERVER['REMOTE_ADDR'] ?? 'unknown'));
  16. http_response_code(403);
  17. header('Content-Type: application/json');
  18. echo json_encode([
  19. 'success' => false,
  20. 'error' => 'csrf_failed',
  21. 'message' => 'Token de sécurité invalide. Veuillez recharger la page.'
  22. ]);
  23. exit();
  24. }
  25. }
  26. }
  27. get::json();
  28. get::jsonData();