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

surcharge possible, include et XSS en moins

parent 2e3026fd
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -267,6 +267,7 @@ ecrire/inc_ajax_page.php -text
ecrire/inc_articles.php -text
ecrire/inc_articles_edit.php -text
ecrire/inc_articles_forum.php -text
ecrire/inc_articles_ortho.php -text
ecrire/inc_articles_page.php -text
ecrire/inc_articles_tous.php -text
ecrire/inc_articles_versions.php -text
......
......@@ -10,253 +10,7 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
include("inc.php3");
include_ecrire("lab_ortho.php");
include_ecrire("inc_layer.php3"); // Pour $browser_name
include_ecrire("inc_presentation.php3");
include_ecrire("inc_texte.php3");
include_ecrire("inc_urls.php3");
include_ecrire("inc_rubriques.php3");
include_ecrire("inc_index.php3");
include_ecrire("inc_logos.php3");
include_ecrire('inc_forum.php3');
//charset_texte('utf-8');
//
// Lire l'article
//
$query = "SELECT * FROM spip_articles WHERE id_article='$id_article'";
$result = spip_query($query);
if ($row = spip_fetch_array($result)) {
$id_article = $row["id_article"];
$surtitre = $row["surtitre"];
$titre = $row["titre"];
$soustitre = $row["soustitre"];
$id_rubrique = $row["id_rubrique"];
$descriptif = $row["descriptif"];
$nom_site = $row["nom_site"];
$url_site = $row["url_site"];
$chapo = $row["chapo"];
$texte = $row["texte"];
$ps = $row["ps"];
$date = $row["date"];
$statut_article = $row["statut"];
$maj = $row["maj"];
$date_redac = $row["date_redac"];
$visites = $row["visites"];
$referers = $row["referers"];
$extra = $row["extra"];
$id_trad = $row["id_trad"];
$lang_article = $row["lang"];
}
if (!$lang_article) $lang_article = $GLOBALS['meta']['langue_site'];
changer_typo($lang_article); # pour l'affichage du texte
// pour l'affichage du virtuel
unset($virtuel);
if (substr($chapo, 0, 1) == '=') {
$virtuel = substr($chapo, 1);
$chapo = "";
}
$champs = array('surtitre', 'titre', 'soustitre', 'descriptif', 'chapo', 'texte', 'ps');
$echap = array();
$ortho = "";
//
// Affichage HTML
//
// Gros hack IE pour le "position: fixed"
$code_ie = "<!--[if IE]>
<style type=\"text/css\" media=\"screen\">
body {
height: 100%; margin: 0px; padding: 0px;
overflow: hidden;
}
.ortho-content {
position: absolute; $spip_lang_left: 0px;
height: 100%; margin: 0px; padding: 0px;
width: 72%;
overflow-y: auto;
}
#ortho-fixed {
position: absolute; $spip_lang_right: 0px; width: 25%;
height: 100%; margin: 0px; padding: 0px;
overflow: hidden;
}
.ortho-padding {
padding: 12px;
}
</style>
<script type=\"text/javascript\">
onload = function() { document.getElementById('ortho-content').focus(); }
</script>
<![endif]-->";
debut_html(_T('ortho_orthographe').' &laquo;'.$titre.'&raquo;', $code_ie);
// Ajouts et suppressions de mots par l'utilisateur
gerer_dico_ortho($lang_article);
//
// Panneau de droite
//
echo "<div id='ortho-fixed'>";
echo "<div class='ortho-padding serif'>";
debut_cadre_enfonce();
foreach ($champs as $champ) {
$ortho .= $$champ." ";
}
$ortho = preparer_ortho($ortho, $lang_article);
$result_ortho = corriger_ortho($ortho, $lang_article);
if (is_array($result_ortho)) {
$mots = $result_ortho['mauvais'];
if ($erreur = $result_ortho['erreur']) {
echo "<b>"._T('ortho_trop_de_fautes').aide('corrortho')."</b><p>\n";
echo "<b>"._T('ortho_trop_de_fautes2')."</b><p>";
}
else {
echo "<b>"._T('ortho_mode_demploi').aide('corrortho')."</b><p>\n";
}
panneau_ortho($result_ortho);
}
else {
$erreur = $result_ortho;
echo "<b>"._T('ortho_dico_absent').aide('corrortho')." (";
echo traduire_nom_langue($lang_article);
echo "). ";
echo _T('ortho_verif_impossible')."</b>";
}
fin_cadre_enfonce();
echo "</div>";
echo "</div>";
//
// Colonne de gauche : textes de l'article
//
echo "<div class='ortho-content' id='ortho-content'>";
echo "<div class='ortho-padding serif'>";
// Traitement des champs : soulignement des mots mal orthographies
foreach ($champs as $champ) {
switch ($champ) {
case 'texte':
case 'chapo':
case 'descriptif':
case 'ps':
// Mettre de cote les <code>, <cadre>, etc.
list($$champ, $echap) = echappe_html($$champ, "ORTHO");
$$champ = propre($$champ);
break;
default:
$echap = "";
$$champ = typo($$champ);
break;
}
// On passe en UTF-8 juste pour la correction
$$champ = preparer_ortho($$champ, $lang_article);
if (is_array($result_ortho))
$$champ = souligner_ortho($$champ, $lang_article, $result_ortho);
// Et on repasse dans le charset original pour remettre les echappements
$$champ = afficher_ortho($$champ);
if ($echap)
$$champ = echappe_retour($$champ, $echap, "ORTHO");
}
// Traitement identique pour les notes de bas de page
if ($les_notes) {
$les_notes = preparer_ortho($les_notes, $lang_article);
if (is_array($result_ortho))
$les_notes = souligner_ortho($les_notes, $lang_article, $result_ortho);
$les_notes = afficher_ortho($les_notes);
}
debut_cadre_relief();
if ($surtitre) {
echo "<span $dir_lang><font face='arial,helvetica' size='3'><b>";
echo $surtitre;
echo "</b></font></span>\n";
}
gros_titre($titre);
if ($soustitre) {
echo "<span $dir_lang><font face='arial,helvetica' size='3'><b>";
echo $soustitre;
echo "</b></font></span>\n";
}
if ($descriptif OR $url_site OR $nom_site) {
echo "<p><div align='$spip_lang_left' style='padding: 5px; border: 1px dashed #aaaaaa; background-color: #e4e4e4;' $dir_lang>";
echo "<font size='2' face='Verdana,Arial,Sans,sans-serif'>";
$texte_case = ($descriptif) ? "{{"._T('info_descriptif')."}} $descriptif\n\n" : '';
$texte_case .= ($nom_site.$url_site) ? "{{"._T('info_urlref')."}} [".$nom_site."->".$url_site."]" : '';
echo $descriptif;
echo "</font>";
echo "</div>";
}
// Corps de l'article
echo "\n\n<div align='justify'>";
if ($virtuel) {
debut_boite_info();
echo _T('info_renvoi_article')." ".propre("<center>[->$virtuel]</center>");
fin_boite_info();
}
else {
echo "<div $dir_lang><b>";
echo $chapo;
echo "</b></div>\n\n";
echo "<div $dir_lang>";
echo $texte;
echo "</div>";
if ($ps) {
echo debut_cadre_enfonce();
echo "<div $dir_lang><font size='2' face='Verdana,Arial,Sans,sans-serif'>";
echo "<b>"._T('info_ps')."</b> ";
echo $ps;
echo "</font></div>";
echo fin_cadre_enfonce();
}
if ($les_notes) {
echo debut_cadre_relief();
echo "<div $dir_lang><font size='2'>";
echo "<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes;
echo "</font></div>";
echo fin_cadre_relief();
}
if ($champs_extra AND $extra) {
include_ecrire("inc_extra.php");
extra_affichage($extra, "articles");
}
}
echo "</div>";
fin_cadre_relief();
html_background();
echo "</div>";
echo "</div>";
fin_html();
include ("inc.php3");
$var_f = include_fonction(basename($SCRIPT_NAME, '.php'));
$var_f();
?>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2005 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_ecrire("inc_presentation.php3");
include_ecrire("inc_distant.php");
include_ecrire("lab_ortho.php");
function articles_ortho_dist()
{
global
$browser_name,
$champs_extra,
$chapo,
$descriptif,
$dir_lang,
$id_article,
$les_notes,
$ps,
$soustitre,
$spip_lang_left,
$spip_lang_right,
$surtitre,
$texte,
$titre;
//charset_texte('utf-8');
//
// Lire l'article
//
$id_article = intval($id_article);
$query = "SELECT * FROM spip_articles WHERE id_article='$id_article'";
$result = spip_query($query);
if ($row = spip_fetch_array($result)) {
$id_article = $row["id_article"];
$surtitre = $row["surtitre"];
$titre = $row["titre"];
$soustitre = $row["soustitre"];
$id_rubrique = $row["id_rubrique"];
$descriptif = $row["descriptif"];
$nom_site = $row["nom_site"];
$url_site = $row["url_site"];
$chapo = $row["chapo"];
$texte = $row["texte"];
$ps = $row["ps"];
$date = $row["date"];
$statut_article = $row["statut"];
$maj = $row["maj"];
$date_redac = $row["date_redac"];
$visites = $row["visites"];
$referers = $row["referers"];
$extra = $row["extra"];
$id_trad = $row["id_trad"];
$lang_article = $row["lang"];
}
if (!$lang_article) $lang_article = $GLOBALS['meta']['langue_site'];
changer_typo($lang_article); # pour l'affichage du texte
// pour l'affichage du virtuel
if (substr($chapo, 0, 1) == '=') {
$virtuel = substr($chapo, 1);
$chapo = "";
}
$echap = array();
$ortho = "";
//
// Affichage HTML
//
// Gros hack IE pour le "position: fixed"
$code_ie = "<!--[if IE]>
<style type=\"text/css\" media=\"screen\">
body {
height: 100%; margin: 0px; padding: 0px;
overflow: hidden;
}
.ortho-content {
position: absolute; $spip_lang_left: 0px;
height: 100%; margin: 0px; padding: 0px;
width: 72%;
overflow-y: auto;
}
#ortho-fixed {
position: absolute; $spip_lang_right: 0px; width: 25%;
height: 100%; margin: 0px; padding: 0px;
overflow: hidden;
}
.ortho-padding {
padding: 12px;
}
</style>
<script type=\"text/javascript\">
onload = function() { document.getElementById('ortho-content').focus(); }
</script>
<![endif]-->";
debut_html(_T('ortho_orthographe').' &laquo;'.$titre.'&raquo;', $code_ie);
// Ajouts et suppressions de mots par l'utilisateur
gerer_dico_ortho($lang_article);
//
// Panneau de droite
//
echo "<div id='ortho-fixed'>";
echo "<div class='ortho-padding serif'>";
debut_cadre_enfonce();
$champs = array('surtitre', 'titre', 'soustitre', 'descriptif', 'chapo', 'texte', 'ps');
foreach ($champs as $champ) {
$ortho .= $$champ." ";
}
$ortho = preparer_ortho($ortho, $lang_article);
$result_ortho = corriger_ortho($ortho, $lang_article);
if (is_array($result_ortho)) {
$mots = $result_ortho['mauvais'];
if ($erreur = $result_ortho['erreur']) {
echo "<b>"._T('ortho_trop_de_fautes').aide('corrortho')."</b><p>\n";
echo "<b>"._T('ortho_trop_de_fautes2')."</b><p>";
}
else {
echo "<b>"._T('ortho_mode_demploi').aide('corrortho')."</b><p>\n";
}
panneau_ortho($result_ortho);
}
else {
$erreur = $result_ortho;
echo "<b>"._T('ortho_dico_absent').aide('corrortho')." (";
echo traduire_nom_langue($lang_article);
echo "). ";
echo _T('ortho_verif_impossible')."</b>";
}
fin_cadre_enfonce();
echo "</div>";
echo "</div>";
//
// Colonne de gauche : textes de l'article
//
echo "<div class='ortho-content' id='ortho-content'>";
echo "<div class='ortho-padding serif'>";
// Traitement des champs : soulignement des mots mal orthographies
foreach ($champs as $champ) {
switch ($champ) {
case 'texte':
case 'chapo':
case 'descriptif':
case 'ps':
// Mettre de cote les <code>, <cadre>, etc.
list($$champ, $echap) = echappe_html($$champ, "ORTHO");
$$champ = propre($$champ);
break;
default:
$echap = "";
$$champ = typo($$champ);
break;
}
// On passe en UTF-8 juste pour la correction
$$champ = preparer_ortho($$champ, $lang_article);
if (is_array($result_ortho))
$$champ = souligner_ortho($$champ, $lang_article, $result_ortho);
// Et on repasse dans le charset original pour remettre les echappements
$$champ = afficher_ortho($$champ);
if ($echap)
$$champ = echappe_retour($$champ, $echap, "ORTHO");
}
// Traitement identique pour les notes de bas de page
if ($les_notes) {
$les_notes = preparer_ortho($les_notes, $lang_article);
if (is_array($result_ortho))
$les_notes = souligner_ortho($les_notes, $lang_article, $result_ortho);
$les_notes = afficher_ortho($les_notes);
}
debut_cadre_relief();
if ($surtitre) {
echo "<span $dir_lang><font face='arial,helvetica' size='3'><b>";
echo $surtitre;
echo "</b></font></span>\n";
}
gros_titre($titre);
if ($soustitre) {
echo "<span $dir_lang><font face='arial,helvetica' size='3'><b>";
echo $soustitre;
echo "</b></font></span>\n";
}
if ($descriptif OR $url_site OR $nom_site) {
echo "<p><div align='$spip_lang_left' style='padding: 5px; border: 1px dashed #aaaaaa; background-color: #e4e4e4;' $dir_lang>";
echo "<font size='2' face='Verdana,Arial,Sans,sans-serif'>";
$texte_case = ($descriptif) ? "{{"._T('info_descriptif')."}} $descriptif\n\n" : '';
$texte_case .= ($nom_site.$url_site) ? "{{"._T('info_urlref')."}} [".$nom_site."->".$url_site."]" : '';
echo $descriptif;
echo "</font>";
echo "</div>";
}
// Corps de l'article
echo "\n\n<div align='justify'>";
if ($virtuel) {
debut_boite_info();
echo _T('info_renvoi_article')." ".propre("<center>[->$virtuel]</center>");
fin_boite_info();
}
else {
echo "<div $dir_lang><b>";
echo $chapo;
echo "</b></div>\n\n";
echo "<div $dir_lang>";
echo $texte;
echo "</div>";
if ($ps) {
echo debut_cadre_enfonce();
echo "<div $dir_lang><font size='2' face='Verdana,Arial,Sans,sans-serif'>";
echo "<b>"._T('info_ps')."</b> ";
echo $ps;
echo "</font></div>";
echo fin_cadre_enfonce();
}
if ($les_notes) {
echo debut_cadre_relief();
echo "<div $dir_lang><font size='2'>";
echo "<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes;
echo "</font></div>";
echo fin_cadre_relief();
}
if ($champs_extra AND $extra) {
include_ecrire("inc_extra.php");
extra_affichage($extra, "articles");
}
}
echo "</div>";
fin_cadre_relief();
// html_background();
echo "</div>";
echo "</div>";
fin_html();
}
?>
......@@ -157,7 +157,6 @@ function choisir_miroirs_ortho($lang) {
// Envoyer une requete a un serveur d'orthographe
//
function post_ortho($url, $texte, $lang) {
include_ecrire('inc_distant.php3');
list($f, $fopen) = init_http('POST', $url, true /* refuse gz */);
if (!$f OR $fopen) {
......@@ -378,7 +377,7 @@ function ajouter_cache_ortho($tous, $mauvais, $lang) {
// Cette fonction doit etre appelee pour reecrire le texte en utf-8 "propre"
//
function preparer_ortho($texte, $lang) {
include_ecrire("inc_charsets.php");
include_ecrire("inc_charsets.php3");
$charset = $GLOBALS['meta']['charset'];
......@@ -404,9 +403,9 @@ function afficher_ortho($texte) {
// et retourne un tableau de mots mal orthographies associes chacun a un tableau de mots suggeres
//
function corriger_ortho($texte, $lang, $charset = 'AUTO') {
include_ecrire("inc_charsets.php");
include_ecrire("inc_index.php");
include_ecrire("inc_filtres.php");
include_ecrire("inc_charsets.php3");
include_ecrire("inc_index.php3");
include_ecrire("inc_filtres.php3");
$texte = preg_replace(',<code>.*?</code>,is', '', $texte);
$texte = preg_replace(',<cadre>.*?</cadre>,is', '', $texte);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter