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.
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>
/lex
sur cakephp j'ai un fichier .htaccess à la racine. Il faut que je met ce code dans ce fichier. Ça ne fonctionne pas.