Bonjour je fait un site de musique. Je veux sécuriser un fichier json avec un token. Le problème est que quand j'apelle cette url :
local.dev/MusicalityMaker/tracks/play/9.json?token=060446b010cc99fb9d137c1b51092b91

en ajax avec la fontion jquery $.ajax le token qui est passer en paramètre n'est plus valide. Comment je fait pour qui soit valide dans un temps cours.

Dans mon appcontroller je jénrére un token aléatoire dans la session :

// geenrate a Token
$this->Session->write('Token_Key',md5(time() + '-' +uniqid() + '-' + mt_rand()));

dans ma fonction play qui est appeler en ajax, je fait une vérification si le token est valide :

public function play($id,$token = null) {
        $this->layout = 'json';
        // met dans une variable le token passer en paramàtre
        $token = $_GET['token'];
        // je vérifie si le token est valide
        if(isset($token) && $token == $this->Session->read('Token_Key')) {
            $track = $this->Track->find('first',array(
                'conditions' => array('Track.id' => $id,'Track.soundcloud_track_id != " " ','Track.online'=>1),
                'fields' => array('Track.id','Track.soundcloud_track_id','Track.secret_token','Track.name','Track.slug')
            ));
            $track = Set::extract('/Track/.', $track);
            $this->set(compact("track"));
        } else {
            $track = array(
                'error' => 'We have a problem!'
            );
            $this->set(compact("track"));
        }
    }

Je veux juste rendre plus dificile pour les pirate de récupéré les information et qui puisse faire un appelle à l'api de soudcloud.

Voici les informations de mon fichier json

{
track: [
{
id: "9",
soundcloud_track_id: "0000",
secret_token: "XXXX",
name: "Deep Melody [Preview 1]",
slug: "deep-melody-preview-1"
}
]
}

Merci de votre aide.

4 réponses


Si tu veux, tu peux sėcuriser le contenu de tes fichiers *.json avec une règle .htaccess, ils seront du coup accessibles uniquement par ton application.

# secure json file
<Files *.json>
  order allow,deny
  deny from all
</Files>
lakamark
Auteur

/lex
sur cakephp j'ai un fichier .htaccess à la racine. Il faut que je met ce code dans ce fichier. Ça ne fonctionne pas.

Salut, c'est dans le fichier .htacess du dossier webroot que tu dois modifier.

En effet, le .htaccess à la racine redirige tout vers celui présent dans le dossier webroot.