From 125a611821a81f9496a477c1f85aba637747b54c Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sun, 15 Jan 2006 23:39:38 +0000 Subject: [PATCH] joli XSS a double detente. A noter qu'un appel a sites_edit communiquait un parametre 'redirect' que celui-ci ignorait --- ecrire/inc_accueil.php | 2 +- ecrire/inc_naviguer.php | 2 +- ecrire/inc_presentation.php3 | 2 +- ecrire/inc_sites.php3 | 2 +- ecrire/inc_sites_edit.php | 13 +++---------- ecrire/inc_sites_tous.php | 5 +---- ecrire/inc_utils.php | 3 ++- 7 files changed, 10 insertions(+), 19 deletions(-) diff --git a/ecrire/inc_accueil.php b/ecrire/inc_accueil.php index 8df827373b..12233e7fd4 100644 --- a/ecrire/inc_accueil.php +++ b/ecrire/inc_accueil.php @@ -164,7 +164,7 @@ if ($spip_display == 4) { if ($activer_sites == 'oui') { if ($connect_statut == '0minirezo' OR $GLOBALS['meta']["proposer_sites"] > 0) { $gadget .= "<td>"; - $gadget .= icone_horizontale(_T('info_sites_referencer'), generer_url_ecrire("sites_edit","new=oui$dans_parent&target=" . generer_url_ecrire('sites')), "site-24.gif","creer.gif", false); + $gadget .= icone_horizontale(_T('info_sites_referencer'), generer_url_ecrire("sites_edit","new=oui$dans_parent"), "site-24.gif","creer.gif", false); $gadget .= "</td>"; } } diff --git a/ecrire/inc_naviguer.php b/ecrire/inc_naviguer.php index 86efef4d92..0f71df226a 100644 --- a/ecrire/inc_naviguer.php +++ b/ecrire/inc_naviguer.php @@ -389,7 +389,7 @@ if ($relief) { if ($id_rubrique > 0 AND ($flag_editable OR $proposer_sites > 0)) { echo "<div align='$spip_lang_right'>"; - icone(_T('info_sites_referencer'), generer_url_ecrire('sites_edit', "id_rubrique=$id_rubrique&target=" . generer_url_ecrire('sites') . '&redirect=' . urlencode($clean_link->getUrl())), "site-24.gif", "creer.gif"); + icone(_T('info_sites_referencer'), generer_url_ecrire('sites_edit', "id_rubrique=$id_rubrique&redirect=" . urlencode($clean_link->getUrl())), "site-24.gif", "creer.gif"); echo "</div><p>"; } } diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3 index 6b26900450..71c88caf87 100644 --- a/ecrire/inc_presentation.php3 +++ b/ecrire/inc_presentation.php3 @@ -2779,7 +2779,7 @@ if (true /*$gadgets*/) { if ($GLOBALS['meta']["activer_sites"] == 'oui') { if ($connect_statut == '0minirezo' OR $GLOBALS['meta']["proposer_sites"] > 0) { $gadget .= "<div style='width: 140px; float: $spip_lang_left;'>"; - $gadget .= icone_horizontale(_T('info_sites_referencer'), generer_url_ecrire("sites_edit","new=oui$dans_parent&target=" . generer_url_ecrire("sites")), "site-24.gif","creer.gif", false); + $gadget .= icone_horizontale(_T('info_sites_referencer'), generer_url_ecrire("sites_edit","new=oui$dans_parent"), "site-24.gif","creer.gif", false); $gadget .= "</div>"; } } diff --git a/ecrire/inc_sites.php3 b/ecrire/inc_sites.php3 index 845f84e47c..9f5d294157 100644 --- a/ecrire/inc_sites.php3 +++ b/ecrire/inc_sites.php3 @@ -345,7 +345,7 @@ echo "</td>"; if ($flag_editable) { echo "<td>". http_img_pack('rien.gif', " ", "width='5'") . "</td>\n"; echo "<td align='right'>"; - icone(_T('icone_modifier_site'), $redirect = generer_url_ecrire('sites_edit',"id_syndic=$id_syndic&rtarget=" . $clean_link->getUrl()), "site-24.gif", "edit.gif"); + icone(_T('icone_modifier_site'), generer_url_ecrire('sites_edit',"id_syndic=$id_syndic"), "site-24.gif", "edit.gif"); echo "</td>"; } echo "</tr></table>\n"; diff --git a/ecrire/inc_sites_edit.php b/ecrire/inc_sites_edit.php index 43a10b4877..a04a2ca858 100644 --- a/ecrire/inc_sites_edit.php +++ b/ecrire/inc_sites_edit.php @@ -15,7 +15,7 @@ include_ecrire("inc_presentation"); function sites_edit_dist() { - global $champs_extra, $clean_link, $connect_statut, $descriptif, $id_rubrique, $id_secteur, $id_syndic, $new, $nom_site, $syndication, $target, $url_site, $url_syndic; + global $champs_extra, $clean_link, $connect_statut, $descriptif, $id_rubrique, $id_secteur, $id_syndic, $new, $nom_site, $syndication, $url_site, $url_syndic; $query = "SELECT * FROM spip_syndic WHERE id_syndic=" . intval($id_syndic); $result = spip_query($query); @@ -88,22 +88,15 @@ if ($new == 'oui'){ echo "<p><blockquote><b>"._T('texte_non_fonction_referencement')."</b>"; $cadre_ouvert = true; debut_cadre_enfonce("site-24.gif"); - } - } -$link = new Link($target); -$link->addVar('new'); -$link->addVar('modifier_site', 'oui'); -$link->addVar('syndication_old', $syndication); -echo $link->getForm('POST'); - $nom_site = entites_html($nom_site); $url_site = entites_html($url_site); $url_syndic = entites_html($url_syndic); -echo _T('info_nom_site_2')."<br>"; + echo generer_url_post_ecrire('sites', ($id_syndic ? "id_syndic=$id_syndic" : "new=oui") . "&modifier_site=oui&syndication_old=$syndication"); +echo _T('info_nom_site_2')."<br />"; echo "<input type='text' class='formo' name='nom_site' value=\"$nom_site\" size='40'><p>"; if (strlen($url_site)<8) $url_site="http://"; echo _T('entree_adresse_site')."<br>"; diff --git a/ecrire/inc_sites_tous.php b/ecrire/inc_sites_tous.php index c1fc6f746f..13c791f44a 100644 --- a/ecrire/inc_sites_tous.php +++ b/ecrire/inc_sites_tous.php @@ -44,10 +44,7 @@ afficher_sites(_T('titre_sites_proposes'), "SELECT * FROM spip_syndic WHERE stat if ($connect_statut == '0minirezo' OR $GLOBALS['meta']["proposer_sites"] > 0) { echo "<div align='right'>"; - $link = new Link(generer_url_ecrire('sites_edit')); - $link->addVar('target', generer_url_ecrire('sites')); - $link->addVar('redirect', $clean_link->getUrl()); - icone(_T('icone_referencer_nouveau_site'), $link->getUrl(), "site-24.gif", "creer.gif"); + icone(_T('icone_referencer_nouveau_site'), generer_url_ecrire('sites_edit'), "site-24.gif", "creer.gif"); echo "</div>"; } diff --git a/ecrire/inc_utils.php b/ecrire/inc_utils.php index 629ff7618f..9393836e11 100644 --- a/ecrire/inc_utils.php +++ b/ecrire/inc_utils.php @@ -644,7 +644,8 @@ function charger_generer_url() { // Bravo au W3C qui n'a pas ete capable de nous eviter ca // faute de separer proprement langage et meta-langage -// Ecriture tres tarabiscotee pour assurer la transition php3 & mutualisation +// Attention, X?y=z et "X/?y=z" sont completement differents! +// http://httpd.apache.org/docs/2.0/mod/mod_dir.html function generer_url_ecrire($script, $args="", $no_entities=false, $rel=false) { $site = $rel ? "" : $GLOBALS['meta']["adresse_site"]; -- GitLab