Implement CSRF token for list editing

This commit is contained in:
Mcat12
2016-05-02 20:33:29 -04:00
parent d4838fea8c
commit 283f4b7978
3 changed files with 31 additions and 12 deletions
+11 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}