Securiser l'upload du fichier [Résolu/Fermé]

Signaler
Messages postés
62
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
12 août 2020
-
Messages postés
62
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
12 août 2020
-
Bonjour , je veux sécuriser l'upload de mes fichiers en php pdo mais je ne sais pas comment.


<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true ");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS, FILES');
header("Access-Control-Allow-Headers: X-Custom-Header, Origin, Content-Type , Authorisation , X-Requested-With");
header("Content-Type: application/json; charset=UTF-8 ");
header("Referrer-Policy: origin-when-cross-origin");
header("Expect-CT: max-age=7776000, enforce");
header('Strict-Transport-Security: max-age=16070400; includeSubDomains');
header('X-XSS-Protection: 1; mode=block');
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: SAMEORIGIN');



$target_dir = "../../Meslek/MeslekCombat/src/assets/uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
$target_file_video = $target_dir . basename($_FILES["video"]["name"]);



function conn()
{
  try{
  $bdd =new PDO('mysql:host=localhost; dbname=meslek; charset=utf8', 'root', '');
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
 return $bdd;
}

$categorie =    htmlspecialchars($_POST['categorie'], ENT_QUOTES);
$titre =      htmlspecialchars($_POST['titre'], ENT_QUOTES);


if ( empty($titre) || empty($categorie)   ) {
    echo json_encode(false);
    die;
} else {

if(!empty($_FILES["image"])){
    move_uploaded_file($_FILES["image"]["tmp_name"], $target_file);   
    $photo = basename( $_FILES["image"]["name"]);
}

if(!empty($_FILES["video"])){
    move_uploaded_file($_FILES["video"]["tmp_name"], $target_file_video);   
    $video = basename( $_FILES["video"]["name"]);
}


$db = conn();


/*if (empty($_FILES["image"])){
    $photo = "none";
}

$prepred = $db->prepare("INSERT INTO produit (categorie, marque, prix, couleur, qte, niveau, photo) VALUES(?,?,?,?,?,?,?)");
$prepred->execute([$category, $marque, $prix, $couleur, $qte, $niveau, $photo]);*/

echo json_encode(true);
}


?>

1 réponse

Messages postés
30356
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2020
3 029
Bonjour,

Commence par appliquer ceci : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
(n'oublie pas de mettre CHAQUE requete dans un bloc try/catch )

Et faudrait également nous détailler le souci rencontré...
<<sécuriser en pdo>>..ça ne veut pas dire grand chose
Messages postés
62
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
12 août 2020

le problème est comment garantir la sécurité des fichiers transférés au serveurs $_FILES["video"], $_FILES["image"], comment les proteger et mettre les extensions et la taille amaximale etc ...
Messages postés
30356
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2020
3 029 >
Messages postés
62
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
12 août 2020

ça n'a donc aucun rapport avec PDO...

et... visiblement tu n'as pas dû chercher beaucoup avant de venir poster ta demande ici...
Voici de quoi t'orienter :
https://antoine-herault.developpez.com/tutoriels/php/upload/
Messages postés
62
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
12 août 2020

merci