json.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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 . "cms.session.php";
  8. header('Content-Type: application/json');
  9. // Validation CSRF pour les requêtes JSON POST
  10. if ($_SERVER['REQUEST_METHOD'] === 'POST' && core::ifGet("jsonData")) {
  11. $jsonData = core::getGet("jsonData");
  12. // Actions sensibles nécessitant une protection CSRF
  13. $csrfProtectedActions = [
  14. 'user-delete',
  15. 'document-delete',
  16. 'event-delete',
  17. 'salarie-delete',
  18. 'client-update',
  19. 'tag-update'
  20. ];
  21. if (in_array($jsonData, $csrfProtectedActions)) {
  22. if (!csrf::validateHeader('cms-ajax', 'X-CSRF-Token')) {
  23. error_log("CSRF validation failed for JSON action: $jsonData from IP: " . ($_SERVER['REMOTE_ADDR'] ?? 'unknown'));
  24. http_response_code(403);
  25. echo json_encode([
  26. 'success' => false,
  27. 'error' => 'csrf_failed',
  28. 'message' => 'Token de sécurité invalide. Veuillez recharger la page.'
  29. ]);
  30. exit();
  31. }
  32. }
  33. }
  34. get::json();
  35. get::jsonData();