Correction faille CSRF

This commit is contained in:
fredtempez 2019-01-04 23:27:35 +01:00
parent 1fc8061236
commit 547693709e
2 changed files with 45 additions and 36 deletions

View File

@ -75,43 +75,52 @@ class page extends common {
* Suppression * Suppression
*/ */
public function delete() { public function delete() {
// La page n'existe pas // $url prend l'adresse sans le token
if($this->getData(['page', $this->getUrl(2)]) === null) { $url = explode('&',$this->getUrl(2));
// Valeurs en sortie // La page n'existe pas
$this->addOutput([ if($this->getData(['page', $url[0]]) === null) {
'access' => false // Valeurs en sortie
]); $this->addOutput([
} 'access' => false
// Impossible de supprimer la page d'accueil ]);
elseif($this->getUrl(2) === $this->getData(['config', 'homePageId'])) { }
// Valeurs en sortie // Impossible de supprimer la page d'accueil
$this->addOutput([ elseif($url[0] === $this->getData(['config', 'homePageId'])) {
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), // Valeurs en sortie
'notification' => 'Impossible de supprimer la page d\'accueil' $this->addOutput([
]); 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
} 'notification' => 'Impossible de supprimer la page d\'accueil'
// Impossible de supprimer une page contenant des enfants ]);
elseif($this->getHierarchy($this->getUrl(2))) { }
// Valeurs en sortie // Jeton incorrect
$this->addOutput([ elseif($_GET['csrf'] !== $_SESSION['csrf']) {
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), // Valeurs en sortie
'notification' => 'Impossible de supprimer une page contenant des enfants' $this->addOutput([
]); 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
} 'notification' => 'Suppression non autorisée'
// Suppression ]);
else { }
$this->deleteData(['page', $this->getUrl(2)]); // Impossible de supprimer une page contenant des enfants
$this->deleteData(['module', $this->getUrl(2)]); elseif($this->getHierarchy($url[0])) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl(false), 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => 'Page supprimée', 'notification' => 'Impossible de supprimer une page contenant des enfants'
'state' => true ]);
]); }
} // Suppression
else {
$this->deleteData(['page', $url[0]]);
$this->deleteData(['module', $url[0]]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl(false),
'notification' => 'Page supprimée',
'state' => true
]);
}
} }
/** /**
* Édition des blocs * Édition des blocs
*/ */

View File

@ -13,7 +13,7 @@
<div class="col2 offset6"> <div class="col2 offset6">
<?php echo template::button('pageEditDelete', [ <?php echo template::button('pageEditDelete', [
'class' => 'buttonRed', 'class' => 'buttonRed',
'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2), 'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2) . '&csrf=' . $_SESSION['csrf'],
'value' => 'Supprimer', 'value' => 'Supprimer',
'ico' => 'cancel' 'ico' => 'cancel'
]); ?> ]); ?>