éviter une injection dans l'url

Mammouth du PHP | 643 Messages

05 mars 2016, 19:23

Salut à tous.
J'ai mon script qui me genere les url suivant le formulaire saisie par l'internaute:
Exemple d'url généré:
http://monsite.fr/sortie.php?ville=gren ... imepicker=


J'aimerais éviter qu'on s'amuse à rajouter quelque chose à la suite de datetimepicker= afin d'éviter les erreurs comment procéder svp.

J'ai mis mon js en cas:
function chargerDonnees(du, au, page) {
	
	var dep = $('#departement').val();
	var region = $('#departement').attr('data-region');
	var loisir = $('#loisir').val();
	var vil = $('#ville').val();
	var datetimepicker2 = $('#datetimepicker2').val();
	
    $.ajax({
        type: 'GET',
        url: 'include/rechercheAjax.php',
        data: 'du='+du+'&au='+au+'&page='+page+'&departement='+dep+'&region='+region+'&loisir='+loisir+'&ville='+vil+'&date='+datetimepicker2,
        processData: true,
        async: false,

// ....
mon code datepicker:
if(!empty($_REQUEST['datetimepicker'])) {
		$date = DateTime::createFromFormat('d/m/Y', $_REQUEST['datetimepicker']);
		$du = $au = $date->format('Y-m-d');
	}

Mammouth du PHP | 2703 Messages

05 mars 2016, 19:39

c'est impossible d’empêcher quelqu'un de rajouter quelque chose. ce qu'il faut faire, c'est vérifier les données qui sont passées en paramètre et ne faire le traitement que si le format est bon.

Mammouth du PHP | 643 Messages

06 mars 2016, 22:08

Donc pour le coup il faut que je vérifie le format de la date si j'ai bien compris et si c'est faux alors redirection 404 par exemple .
C'est bien ça ? Si oui, aurais tu une piste pour vérifier le format de la date je te prie ...

Mammouth du PHP | 643 Messages

07 mars 2016, 00:17

J'ai essayer ceci :
if(!empty($_REQUEST['datetimepicker'])) {
		$date = DateTime::createFromFormat('d/m/Y', $_REQUEST['datetimepicker']);
		$du = $au = $date->format('Y-m-d');
		if ($date->format('Y-m-d')) {
	}else{
		header('Location: http://www.google.com/');
	}
	}
Mais même si on s'amuse à rajouter des caractères à la suite de =datetimepicker ca ne redirige pas:
exemple cette url devrai me redirigé normalement:
monsite.fr/sortie.php?ville=&departement=&loisir=&datetimepicker=22%2F03%2F2016516516
car la bonne url serai normalement
monsite.fr/sortie.php?ville=&departement=&loisir=&datetimepicker=22%2F03%2F2016