ouvrir un fichier a partir d'un repertoire securise
4 réponses
Stephanie Le Gall
Bonjour,
Pour des raisons de securité, je dois déplacer un fichier PDF avant de
l'ouvrir, puis le supprimer, pour ne pas que l'on puisse le retrouver par
une url sans passer par un login ...
Bref, ce que j'ai essayé de faire c'est de déplacer le fameux fichier vers
un autre repertoire, puis de l'ouvrir "OnLoad" de la page avec une fonction
Javascript, puis le supprimer unlink(), or il se supprime plus vite qu'il ne
s'ouvre et on a un "not found"...
La solution que j'ai trouvée c'est de supprimer le fichier "OnUnload" en
ouvrant un pop-up qui supprime le fichier et se referme automatiquement ...
Mais le pop-up c'est pas super:
- pas esthétique
- il suffit d'avoir un système de bloquage de pop-up pour que cela ne
fonctionne plus ...
Quelqu'un aurait il une solution plus ergonomique et efficace ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrick Mevzek
Quelqu'un aurait il une solution plus ergonomique et efficace ?
Surtout plus efficace: après authentification vous donnez un ``ticket'' (une chaine opaque unique) dont la présentation (par exemple dans l'URL) sera nécessaire pour accéder au fichier.
Bien entendu chaque ticket n'est valable qu'une fois: du côté du serveur il faudra stocker les tickets émis et utilisés.
Il faudra aussi faire attention aux en-têtes HTTP pour éviter que le document soit mis en cache quelque part.
Mais ne pas se faire trop d'illusion: une fois le document reçu par le client, ce dernier peut très bien le sauvegarder, le rediffuser, etc...
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Quelqu'un aurait il une solution plus ergonomique et efficace ?
Surtout plus efficace:
après authentification vous donnez un ``ticket'' (une chaine opaque
unique) dont la présentation (par exemple dans l'URL) sera nécessaire
pour accéder au fichier.
Bien entendu chaque ticket n'est valable qu'une fois: du côté du serveur
il faudra stocker les tickets émis et utilisés.
Il faudra aussi faire attention aux en-têtes HTTP pour éviter que le
document soit mis en cache quelque part.
Mais ne pas se faire trop d'illusion: une fois le document reçu par le
client, ce dernier peut très bien le sauvegarder, le rediffuser, etc...
--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Quelqu'un aurait il une solution plus ergonomique et efficace ?
Surtout plus efficace: après authentification vous donnez un ``ticket'' (une chaine opaque unique) dont la présentation (par exemple dans l'URL) sera nécessaire pour accéder au fichier.
Bien entendu chaque ticket n'est valable qu'une fois: du côté du serveur il faudra stocker les tickets émis et utilisés.
Il faudra aussi faire attention aux en-têtes HTTP pour éviter que le document soit mis en cache quelque part.
Mais ne pas se faire trop d'illusion: une fois le document reçu par le client, ce dernier peut très bien le sauvegarder, le rediffuser, etc...
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Marc
Quelqu'un aurait il une solution plus ergonomique et efficace ?
oui, nous sommes ici dans un newsgroup php. Il faut donc qu'un script php :
* controle les droits d'acces * si les droits sont OK, il envoie le fichier via un flux au client (navigateur). * il faut en meme temps gerer les header en envoyant les bons types pour signaler l'envoi d'un fichier pdf.
Quelqu'un aurait il une solution plus ergonomique et efficace ?
oui, nous sommes ici dans un newsgroup php. Il faut donc qu'un
script php :
* controle les droits d'acces
* si les droits sont OK, il envoie le fichier via un flux
au client (navigateur).
* il faut en meme temps gerer les header en envoyant les bons
types pour signaler l'envoi d'un fichier pdf.
Quelqu'un aurait il une solution plus ergonomique et efficace ?
oui, nous sommes ici dans un newsgroup php. Il faut donc qu'un script php :
* controle les droits d'acces * si les droits sont OK, il envoie le fichier via un flux au client (navigateur). * il faut en meme temps gerer les header en envoyant les bons types pour signaler l'envoi d'un fichier pdf.
CrazyCat
Stephanie Le Gall wrote:
Pour des raisons de securité, je dois déplacer un fichier PDF avant de l'ouvrir, puis le supprimer, pour ne pas que l'on puisse le retrouver par une url sans passer par un login ... Bref, ce que j'ai essayé de faire c'est de déplacer le fameux fichier vers un autre repertoire, puis de l'ouvrir "OnLoad" de la page avec une fonction Javascript, puis le supprimer unlink(), or il se supprime plus vite qu'il ne s'ouvre et on a un "not found"... La solution que j'ai trouvée c'est de supprimer le fichier "OnUnload" en ouvrant un pop-up qui supprime le fichier et se referme automatiquement ...
Pourquoi mélanger javascript et PHP alors que PHP peut tout faire? Si tu accèdes à ta page qui permet d'afficher le pdf depuis une interface sécurisée, et que cette page ne fait que afficher (ou envoyer) le pdf, il te suffit de faire la chose suivante: <? function islogged($someone) { // moyen de vérifier l'autorisation // retourne true ou false }
if (islogged($user)) { if (file_exists($fichier)) { $size = filesize($fichier) header("Content-type: application/pdf"); header("Content-Length: ".$size); header("Content-Disposition: inline; filename="$fichier""); header("Content-Transfer-Encoding: binary"); readfile($fichier); } else { die("Connait pas ce fichier"); } } else { die("Vous n'avez pas le droit de lire ceci"); } ?>
Et $fichier peut être dans un répertoire protégé par htaccess (donc toujours accessible par un script)
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Stephanie Le Gall wrote:
Pour des raisons de securité, je dois déplacer un fichier PDF avant de
l'ouvrir, puis le supprimer, pour ne pas que l'on puisse le retrouver par
une url sans passer par un login ...
Bref, ce que j'ai essayé de faire c'est de déplacer le fameux fichier vers
un autre repertoire, puis de l'ouvrir "OnLoad" de la page avec une fonction
Javascript, puis le supprimer unlink(), or il se supprime plus vite qu'il ne
s'ouvre et on a un "not found"...
La solution que j'ai trouvée c'est de supprimer le fichier "OnUnload" en
ouvrant un pop-up qui supprime le fichier et se referme automatiquement ...
Pourquoi mélanger javascript et PHP alors que PHP peut tout faire?
Si tu accèdes à ta page qui permet d'afficher le pdf depuis une
interface sécurisée, et que cette page ne fait que afficher (ou envoyer)
le pdf, il te suffit de faire la chose suivante:
<?
function islogged($someone) {
// moyen de vérifier l'autorisation
// retourne true ou false
}
if (islogged($user)) {
if (file_exists($fichier)) {
$size = filesize($fichier)
header("Content-type: application/pdf");
header("Content-Length: ".$size);
header("Content-Disposition: inline; filename="$fichier"");
header("Content-Transfer-Encoding: binary");
readfile($fichier);
} else {
die("Connait pas ce fichier");
}
} else {
die("Vous n'avez pas le droit de lire ceci");
}
?>
Et $fichier peut être dans un répertoire protégé par htaccess (donc
toujours accessible par un script)
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
Pour des raisons de securité, je dois déplacer un fichier PDF avant de l'ouvrir, puis le supprimer, pour ne pas que l'on puisse le retrouver par une url sans passer par un login ... Bref, ce que j'ai essayé de faire c'est de déplacer le fameux fichier vers un autre repertoire, puis de l'ouvrir "OnLoad" de la page avec une fonction Javascript, puis le supprimer unlink(), or il se supprime plus vite qu'il ne s'ouvre et on a un "not found"... La solution que j'ai trouvée c'est de supprimer le fichier "OnUnload" en ouvrant un pop-up qui supprime le fichier et se referme automatiquement ...
Pourquoi mélanger javascript et PHP alors que PHP peut tout faire? Si tu accèdes à ta page qui permet d'afficher le pdf depuis une interface sécurisée, et que cette page ne fait que afficher (ou envoyer) le pdf, il te suffit de faire la chose suivante: <? function islogged($someone) { // moyen de vérifier l'autorisation // retourne true ou false }
if (islogged($user)) { if (file_exists($fichier)) { $size = filesize($fichier) header("Content-type: application/pdf"); header("Content-Length: ".$size); header("Content-Disposition: inline; filename="$fichier""); header("Content-Transfer-Encoding: binary"); readfile($fichier); } else { die("Connait pas ce fichier"); } } else { die("Vous n'avez pas le droit de lire ceci"); } ?>
Et $fichier peut être dans un répertoire protégé par htaccess (donc toujours accessible par un script)
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Nadine St-Amand
CrazyCat wrote:
readfile($fichier);
Il y a egalement fpassthru() qui est programme pour ce genre d'usage.
-- Nadine St-Amand Génération de code, sql2php : http://www.phpbackend.com/
CrazyCat wrote:
readfile($fichier);
Il y a egalement fpassthru() qui est programme pour ce genre d'usage.
--
Nadine St-Amand
Génération de code, sql2php : http://www.phpbackend.com/