mirror of
https://github.com/pi-hole/web.git
synced 2024-12-06 19:36:21 +01:00
Implement CSRF token for list editing
This commit is contained in:
@@ -10,6 +10,13 @@ function getFullName() {
|
||||
else
|
||||
echo "Blacklist";
|
||||
}
|
||||
|
||||
// Generate CSRF token
|
||||
session_start();
|
||||
if(empty($_SESSION['token'])) {
|
||||
$_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32));
|
||||
}
|
||||
$token = $_SESSION['token'];
|
||||
?>
|
||||
|
||||
<!-- Title -->
|
||||
@@ -86,8 +93,8 @@ require "footer.php";
|
||||
document.getElementById("alFailure").hidden = true;
|
||||
$.ajax({
|
||||
url: "php/add.php",
|
||||
method: "get",
|
||||
data: {"domain":domain, "list":"<?php echo $list ?>"},
|
||||
method: "post",
|
||||
data: {"domain":domain, "list":"<?php echo $list ?>", "token":"<?php echo $token ?>"},
|
||||
success: function(response) {
|
||||
if(response.length !== 0)
|
||||
return;
|
||||
@@ -104,8 +111,8 @@ require "footer.php";
|
||||
$("#"+index).hide("highlight");
|
||||
$.ajax({
|
||||
url: "php/sub.php",
|
||||
method: "get",
|
||||
data: {"domain":entry, "list":"<?php echo $list ?>"},
|
||||
method: "post",
|
||||
data: {"domain":entry, "list":"<?php echo $list ?>", "token":"<?php echo $token ?>"},
|
||||
success: function(response) {
|
||||
if(response.length !== 0)
|
||||
return;
|
||||
|
||||
+10
-4
@@ -1,12 +1,18 @@
|
||||
<?php
|
||||
if(!isset($_GET['domain'], $_GET['list']))
|
||||
if(!isset($_POST['domain'], $_POST['list'], $_POST['token']))
|
||||
die();
|
||||
|
||||
switch($_GET['list']) {
|
||||
session_start();
|
||||
|
||||
// Check CSRF token
|
||||
if(!hash_equals($_SESSION['token'], $_POST['token']))
|
||||
die("Wrong token!");
|
||||
|
||||
switch($_POST['list']) {
|
||||
case "white":
|
||||
exec("sudo pihole -w -q ${_GET['domain']}");
|
||||
exec("sudo pihole -w -q ${_POST['domain']}");
|
||||
break;
|
||||
case "black":
|
||||
exec("sudo pihole -b -q ${_GET['domain']}");
|
||||
exec("sudo pihole -b -q ${_POST['domain']}");
|
||||
break;
|
||||
}
|
||||
|
||||
+10
-4
@@ -1,12 +1,18 @@
|
||||
<?php
|
||||
if(!isset($_GET['domain'], $_GET['list']))
|
||||
if(!isset($_POST['domain'], $_POST['list'], $_POST['token']))
|
||||
die();
|
||||
|
||||
switch($_GET['list']) {
|
||||
session_start();
|
||||
|
||||
// Check CSRF token
|
||||
if(!hash_equals($_SESSION['token'], $_POST['token']))
|
||||
die("Wrong token!");
|
||||
|
||||
switch($_POST['list']) {
|
||||
case "white":
|
||||
exec("sudo pihole -w -q -d ${_GET['domain']}");
|
||||
exec("sudo pihole -w -q -d ${_POST['domain']}");
|
||||
break;
|
||||
case "black":
|
||||
exec("sudo pihole -b -q -d ${_GET['domain']}");
|
||||
exec("sudo pihole -b -q -d ${_POST['domain']}");
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user