Skip to content
Extraits de code Groupes Projets
Valider ec57e65f rédigé par cerdic's avatar cerdic
Parcourir les fichiers

ecrire_fichier_securise/lire_fichier_securise permettent d'encapsuler un...

ecrire_fichier_securise/lire_fichier_securise permettent d'encapsuler un contenu dans un fichier .php non lisible en http meme si apache ne bloque pas l'acces au repertoire
on applique au cache des meta
parent 84f36ded
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -180,6 +180,33 @@ function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $trunca
return false;
}
/**
* Ecrire un contenu dans un fichier encapsule en php pour en empecher l'acces en l'absence
* de htaccess
* @param string $fichier
* @param <type> $contenu
* @param <type> $ecrire_quand_meme
* @param <type> $truncate
*/
function ecrire_fichier_securise ($fichier, $contenu, $ecrire_quand_meme = false, $truncate=true) {
$fichier .= ".php";
$contenu = "<"."?php die ('Acces interdit'); ?".">\n" . $contenu;
return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
}
/**
* Lire un fichier encapsule en php
* @param <type> $fichier
* @param <type> $contenu
* @param <type> $options
*/
function lire_fichier_securise ($fichier, &$contenu, $options=false) {
if ($res = lire_fichier("$fichier.php",$contenu,$options)){
$contenu = substr($contenu,strlen("<"."?php die ('Acces interdit'); ?".">\n"));
}
return $res;
}
// http://doc.spip.org/@raler_fichier
function raler_fichier($fichier)
{
......
......@@ -24,11 +24,12 @@ function inc_meta_dist()
// Lire les meta, en cache si present, valide et lisible
// en cas d'install ne pas faire confiance au meta_cache eventuel
if ((_request('exec')!=='install' OR !test_espace_prive())
AND $new = jeune_fichier(_FILE_META, _META_CACHE_TIME)
AND $new = jeune_fichier(_FILE_META.".php", _META_CACHE_TIME)
# AND (@filemtime(_FILE_META) > @filemtime(_DIR_RESTREINT . '.svn/entries'))
AND $meta = spip_file_get_contents(_FILE_META)
AND lire_fichier_securise(_FILE_META,$meta)
AND $meta = @unserialize($meta))
$GLOBALS['meta'] = $meta;
if (isset($GLOBALS['meta']['touch']) && ($GLOBALS['meta']['touch']<time()-_META_CACHE_TIME))
unset($GLOBALS['meta']);
// sinon lire en base
......@@ -39,7 +40,7 @@ function inc_meta_dist()
AND (time() > _RENOUVELLE_ALEA + @$GLOBALS['meta']['alea_ephemere_date'])) {
// si on n'a pas l'acces en ecriture sur le cache,
// ne pas renouveller l'alea sinon le cache devient faux
if (supprimer_fichier(_FILE_META)) {
if (supprimer_fichier(_FILE_META.".php")) {
include_spip('inc/acces');
renouvelle_alea();
$new = false;
......@@ -74,13 +75,13 @@ function lire_metas() {
// http://doc.spip.org/@touch_meta
function touch_meta($antidate= false){
if (!$antidate OR !@touch(_FILE_META, $antidate)) {
if (!$antidate OR !@touch(_FILE_META.".php", $antidate)) {
$r = $GLOBALS['meta'];
unset($r['alea_ephemere']);
unset($r['alea_ephemere_ancien']);
unset($r['secret_du_site']);
if ($antidate) $r['touch']= $antidate;
ecrire_fichier(_FILE_META, serialize($r));
ecrire_fichier_securise(_FILE_META, serialize($r));
}
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter