From fb03e93a467a3e02334d82404746b3d91b60e7e4 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Wed, 23 Aug 2006 10:18:53 +0000 Subject: [PATCH] =?UTF-8?q?S=C3=A9curit=C3=A9=20Ajax:=20depuis=20que=20les?= =?UTF-8?q?=20formulaires=20sont=20appelables=20par=20des=20scripts=20auto?= =?UTF-8?q?nomes,=20il=20faut=20rev=C3=A9rifier=20les=20droits=20du=20conn?= =?UTF-8?q?ect=C3=A9=20sur=20l'objet=20sur=20lequel=20s'applique=20le=20fo?= =?UTF-8?q?rmulaire.=20Autrement=20les=20simples=20r=C3=A9dacteurs=20et=20?= =?UTF-8?q?les=20admins=20restreint=20peuvent=20se=20fabriquer=20un=20form?= =?UTF-8?q?ulaire=20modifiant=20les=20annexes=20(pi=C3=A8ces=20jointes,=20?= =?UTF-8?q?forums,=20p=C3=A9tition=20etc)=20d'un=20objet=20qu'il=20n'admin?= =?UTF-8?q?istre=20pas.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/exec/documenter.php | 8 ++++++++ ecrire/exec/petitionner.php | 6 ++++++ ecrire/exec/poster.php | 6 ++++++ ecrire/exec/tourner.php | 8 ++++++++ ecrire/exec/virtualiser.php | 10 ++++++++-- ecrire/inc/auth.php | 17 +++++++++++++++++ 6 files changed, 53 insertions(+), 2 deletions(-) diff --git a/ecrire/exec/documenter.php b/ecrire/exec/documenter.php index 6f73fc4f5a..5d6d78b562 100644 --- a/ecrire/exec/documenter.php +++ b/ecrire/exec/documenter.php @@ -19,6 +19,14 @@ function exec_documenter_dist() $id = intval($id); $id_document = intval($id_document); + if (!($type == 'article' + ? acces_article($id) + : acces_rubrique($id))) { + spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']); + include_spip('inc/minipres'); + minipres(_T('info_acces_interdit')); + } + include_spip('inc/documents'); include_spip('inc/presentation'); diff --git a/ecrire/exec/petitionner.php b/ecrire/exec/petitionner.php index 5d42d4d503..3f7f03ac44 100644 --- a/ecrire/exec/petitionner.php +++ b/ecrire/exec/petitionner.php @@ -18,6 +18,12 @@ function exec_petitionner_dist() global $id_article, $script; $id_article = intval($id_article); + if (!acces_article($id_article)) { + spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']); + include_spip('inc/minipres'); + minipres(_T('info_acces_interdit')); + } + include_spip('inc/petition'); include_spip('inc/presentation'); include_spip('inc/actions'); diff --git a/ecrire/exec/poster.php b/ecrire/exec/poster.php index b7617d9e68..659d3c3679 100644 --- a/ecrire/exec/poster.php +++ b/ecrire/exec/poster.php @@ -18,6 +18,12 @@ function exec_poster_dist() global $id_article, $script; $id_article = intval($id_article); + if (!acces_article($id_article)) { + spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']); + include_spip('inc/minipres'); + minipres(_T('info_acces_interdit')); + } + include_spip('inc/forum'); include_spip('inc/actions'); diff --git a/ecrire/exec/tourner.php b/ecrire/exec/tourner.php index c0190d5b09..049600a380 100644 --- a/ecrire/exec/tourner.php +++ b/ecrire/exec/tourner.php @@ -19,6 +19,14 @@ function exec_tourner_dist() $id = intval($id); $id_document = intval($id_document); + if (!($type == 'article' + ? acces_article($id) + : acces_rubrique($id))) { + spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']); + include_spip('inc/minipres'); + minipres(_T('info_acces_interdit')); + } + include_spip('inc/documents'); include_spip('inc/presentation'); diff --git a/ecrire/exec/virtualiser.php b/ecrire/exec/virtualiser.php index d4f125ddef..e20013e26a 100644 --- a/ecrire/exec/virtualiser.php +++ b/ecrire/exec/virtualiser.php @@ -40,7 +40,7 @@ function formulaire_virtualiser($id_article, $virtuel, $script, $args) . _T('bouton_changer') . "' style='font-size:10px' /></div>"; - return ajax_action_auteur('virtualiser', $id_article, $r, $script, $args, $args); + return ajax_action_auteur('virtualiser', $id_article, $script, $args, $r); } // http://doc.spip.org/@exec_virtualiser_dist @@ -49,9 +49,15 @@ function exec_virtualiser_dist() global $id_article, $script; $id_article = intval($id_article); + if (!acces_article($id_article)) { + spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']); + include_spip('inc/minipres'); + minipres(_T('info_acces_interdit')); + } + include_spip('inc/actions'); - return formulaire_virtualiser($id_article, 'ajax', $script, "&id_article=$id_article"); + return formulaire_virtualiser($id_article, 'ajax', $script, "id_article=$id_article"); } ?> diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php index 0a9ebca352..0787d68e6e 100644 --- a/ecrire/inc/auth.php +++ b/ecrire/inc/auth.php @@ -40,6 +40,23 @@ function acces_mots() { return $connect_toutes_rubriques; } +function acces_article($id_article) +{ + global $connect_id_auteur; + + $row = spip_fetch_array(spip_query("SELECT id_rubrique, statut FROM spip_articles WHERE id_article=$id_article")); + + if (acces_rubrique($row['id_rubrique'])) return true; + + $s = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1")); + + if (!$s) return false; + + $s = $row['statut']; + + return ($s == 'prepa' OR $s == 'prop' OR $s == 'poubelle'); +} + // http://doc.spip.org/@auth_rubrique function auth_rubrique() { -- GitLab