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

Sécurité Ajax: depuis que les formulaires sont appelables par des scripts...

Sécurité Ajax: depuis que les formulaires sont appelables par des scripts autonomes, il faut revérifier les droits du connecté sur l'objet sur lequel s'applique le formulaire. Autrement les simples rédacteurs et les admins restreint peuvent se fabriquer un formulaire modifiant les annexes (pièces jointes, forums, pétition etc) d'un objet qu'il n'administre pas.
parent c24e4ea4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -19,6 +19,14 @@ function exec_documenter_dist() ...@@ -19,6 +19,14 @@ function exec_documenter_dist()
$id = intval($id); $id = intval($id);
$id_document = intval($id_document); $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/documents');
include_spip('inc/presentation'); include_spip('inc/presentation');
......
...@@ -18,6 +18,12 @@ function exec_petitionner_dist() ...@@ -18,6 +18,12 @@ function exec_petitionner_dist()
global $id_article, $script; global $id_article, $script;
$id_article = intval($id_article); $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/petition');
include_spip('inc/presentation'); include_spip('inc/presentation');
include_spip('inc/actions'); include_spip('inc/actions');
......
...@@ -18,6 +18,12 @@ function exec_poster_dist() ...@@ -18,6 +18,12 @@ function exec_poster_dist()
global $id_article, $script; global $id_article, $script;
$id_article = intval($id_article); $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/forum');
include_spip('inc/actions'); include_spip('inc/actions');
......
...@@ -19,6 +19,14 @@ function exec_tourner_dist() ...@@ -19,6 +19,14 @@ function exec_tourner_dist()
$id = intval($id); $id = intval($id);
$id_document = intval($id_document); $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/documents');
include_spip('inc/presentation'); include_spip('inc/presentation');
......
...@@ -40,7 +40,7 @@ function formulaire_virtualiser($id_article, $virtuel, $script, $args) ...@@ -40,7 +40,7 @@ function formulaire_virtualiser($id_article, $virtuel, $script, $args)
. _T('bouton_changer') . _T('bouton_changer')
. "' style='font-size:10px' /></div>"; . "' 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 // http://doc.spip.org/@exec_virtualiser_dist
...@@ -49,9 +49,15 @@ function exec_virtualiser_dist() ...@@ -49,9 +49,15 @@ function exec_virtualiser_dist()
global $id_article, $script; global $id_article, $script;
$id_article = intval($id_article); $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'); 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");
} }
?> ?>
...@@ -40,6 +40,23 @@ function acces_mots() { ...@@ -40,6 +40,23 @@ function acces_mots() {
return $connect_toutes_rubriques; 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 // http://doc.spip.org/@auth_rubrique
function auth_rubrique() function auth_rubrique()
{ {
......
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