Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ouvrir un fichier a partir d'un repertoire securise

4 réponses
Avatar
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 ?

4 réponses

Avatar
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>

Avatar
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.

Avatar
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

Avatar
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/