Après ces deux topics : http://www.developpez.net/forums/sho....php?p=3452530 et http://www.developpez.net/forums/sho...d.php?t=587186. J'ai enfin réussi à faire ce que je voulais...
Donc petit résumé :
J'ai un serveur "www." en https avec bande passante limité. un serveur "images." en https lui aussi avec bande passante illimité. Les membres peuvent poster sur le www (commentaires) et laisser une signature qui peut donc être en image. (On appellera mon domaine meskalyn.net pour les exemples).
Si une image n'est pas hébergée sur du https, cela "casse" l'encryption et mets une jolie alerte sur Internet Explorer...
J'ai donc plus ou moins réussi à faire ce que je voulais, c'est à dire que lors d'une image en :
Mon parser BBCode va remplacer ça par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [img]http://test.net/image.jpg[/img]
Où la fonction "image_cache" est la suivante (disposée sur le www)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <img src=\"".image_cache("http://test.net/image.jpg")."\" />
Ce script "appel" le fichier imagecache.php qui s'occupera de créer l'image sur le serveur d'image...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function image_cache($url) { function valid_name($chainenonvalide) { $chainenonvalide = preg_replace('`\s+`', '_', trim($chainenonvalide)); $chainenonvalide = str_replace("'", "_", $chainenonvalide); $chainenonvalide = preg_replace('`_+`', '_', trim($chainenonvalide)); $chainevalide=strtr($chainenonvalide,",/:[]?ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","------aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"); return ($chainevalide); } // création de l'image sur le script $test = file("http://images.meskalyn.net/cache/imagecache.php?img_url=".$url); return "https://images.meskalyn.net/cache/img/".valid_name($url).""; }
Le fichier imagecache.php :
J'ignore si j'ai été suffisamment clair, mais au final, si l'un de mes membres mets dans son BBCode un .jpg ou .gif qui est en fait un vilain script php... le script est téléchargé... Il peut même mettre directement un fichier php s'il fouille un peu pour retrouver l'URL du "cacheur"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php function valid_name($chainenonvalide) { $chainenonvalide = preg_replace('`\s+`', '_', trim($chainenonvalide)); $chainenonvalide = str_replace("'", "_", $chainenonvalide); $chainenonvalide = preg_replace('`_+`', '_', trim($chainenonvalide)); $chainevalide=strtr($chainenonvalide,",/:[]?ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","------aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"); return ($chainevalide); } $img_url = $_GET["img_url"]; $imagedata = file_get_contents($img_url); $newfile = fopen(valid_name($img_url), "w"); fwrite($newfile, $imagedata); fclose($newfile); ?>
Comment sécuriser cette fonction ?
Partager