Update missing CSRF endpoint checks

This commit is contained in:
johnnyq
2026-07-24 13:16:51 -04:00
parent e7698f15bd
commit 91a1676e89
10 changed files with 38 additions and 5 deletions

View File

@@ -106,7 +106,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<i class="fas fa-fw fa-edit mr-2"></i>Edit
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold" href="post.php?delete_contract_template=<?php echo $id; ?>">
<a class="dropdown-item text-danger text-bold" href="post.php?delete_contract_template=<?= $id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete
</a>
</div>

View File

@@ -8,6 +8,8 @@ defined('FROM_POST_HANDLER') || die("Direct file access is not allowed");
if (isset($_POST['add_contract_template'])) {
validateCSRFToken($_POST['csrf_token']);
// Sanitize text inputs
$name = escapeSql($_POST['name']);
$description = escapeSql($_POST['description']);
@@ -61,6 +63,8 @@ if (isset($_POST['add_contract_template'])) {
if (isset($_POST['edit_contract_template'])) {
validateCSRFToken($_POST['csrf_token']);
$contract_template_id = intval($_POST['contract_template_id']);
$name = escapeSql($_POST['name']);
$description = escapeSql($_POST['description']);
@@ -107,6 +111,9 @@ if (isset($_POST['edit_contract_template'])) {
}
if (isset($_GET['archive_contract_template'])) {
validateCSRFToken($_GET['csrf_token']);
$contract_template_id = intval($_GET['archive_contract_template']);
$name = getFieldById('contract_templates', $contract_template_id, 'contract_template_name');
@@ -123,6 +130,9 @@ if (isset($_GET['archive_contract_template'])) {
}
if (isset($_GET['restore_contract_template'])) {
validateCSRFToken($_GET['csrf_token']);
$contract_template_id = intval($_GET['restore_contract_template']);
$name = getFieldById('contract_templates', $contract_template_id, 'contract_template_name');
@@ -139,6 +149,9 @@ if (isset($_GET['restore_contract_template'])) {
}
if (isset($_GET['delete_contract_template'])) {
validateCSRFToken($_GET['csrf_token']);
$contract_template_id = intval($_GET['delete_contract_template']);
$name = getFieldById('contract_templates', $contract_template_id, 'contract_template_name');

View File

@@ -8,6 +8,8 @@ defined('FROM_POST_HANDLER') || die("Direct file access is not allowed");
if(isset($_POST['create_custom_field'])){
validateCSRFToken($_POST['csrf_token']);
require_once 'custom_field_model.php';
$table = escapeSql($_POST['table']);
@@ -26,6 +28,8 @@ if(isset($_POST['create_custom_field'])){
if(isset($_POST['edit_custom_field'])){
validateCSRFToken($_POST['csrf_token']);
require_once 'custom_field_model.php';
$custom_field_id = intval($_POST['custom_field_id']);
@@ -40,7 +44,9 @@ if(isset($_POST['edit_custom_field'])){
}
if(isset($_GET['delete_custom_field'])){
if(isset($_GET['delete_custom_field'])) {
validateCSRFToken($_GET['csrf_token']);
$custom_field_id = intval($_GET['delete_custom_field']);

View File

@@ -4,6 +4,8 @@ defined('FROM_POST_HANDLER') || die("Direct file access is not allowed");
if (isset($_GET['update'])) {
validateCSRFToken($_GET['csrf_token']);
enforceAdminPermission();
//git fetch downloads the latest from remote without trying to merge or rebase anything. Then the git reset resets the master branch to what you just fetched. The --hard option changes all the files in your working tree to match the files in origin/master
@@ -284,6 +286,8 @@ if (isset($_GET['update'])) {
if (isset($_GET['update_db'])) {
validateCSRFToken($_GET['csrf_token']);
// Get the current version
require_once ('../includes/database_version.php');

View File

@@ -293,6 +293,8 @@ if (isset($_POST['restore_user'])) {
if (isset($_POST['export_users_csv'])) {
validateCSRFToken($_POST['csrf_token']);
//get records from database
$sql = mysqli_query($mysqli, "SELECT * FROM users LEFT JOIN user_roles ON user_role_id = role_id ORDER BY user_name ASC");

View File

@@ -87,7 +87,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<i class="fas fa-fw fa-edit mr-2"></i>Edit
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_custom_field=<?php echo $custom_field_id; ?>">
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_custom_field=<?= $custom_field_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete
</a>
</div>

View File

@@ -56,8 +56,8 @@ $git_log = shell_exec("git log $repo_branch..origin/$repo_branch --pretty=format
<p class="text-center font-weight-bold">Ignore this warning at your own risk.</p>
</div>
<a class="btn btn-primary btn-lg my-4 confirm-link" href="post.php?update"><i class="fas fa-fw fa-4x fa-download mb-1"></i><h5>Update App</h5></a>
<a class="btn btn-danger btn-lg confirm-link" href="post.php?update&force_update=1"><i class="fas fa-fw fa-4x fa-hammer mb-1"></i><h5>FORCE Update App</h5></a>
<a class="btn btn-primary btn-lg my-4 confirm-link" href="post.php?update&csrf_token=<?= $_SESSION['csrf_token'] ?>"><i class="fas fa-fw fa-4x fa-download mb-1"></i><h5>Update App</h5></a>
<a class="btn btn-danger btn-lg confirm-link" href="post.php?update&force_update=1&csrf_token=<?= $_SESSION['csrf_token'] ?>"><i class="fas fa-fw fa-4x fa-hammer mb-1"></i><h5>FORCE Update App</h5></a>
<?php } else { ?>
<p><strong>Application Release Version:<br><strong class="text-dark"><?php echo APP_VERSION; ?></strong></p>

View File

@@ -174,6 +174,8 @@ if (isset($_POST['bulk_delete_networks'])) {
if (isset($_POST['export_networks_csv'])) {
validateCSRFToken($_POST['csrf_token']);
enforceUserPermission('module_support');
if ($_POST['client_id']) {

View File

@@ -246,6 +246,8 @@ if (isset($_POST['bulk_delete_products'])) {
if (isset($_POST['export_products_csv'])) {
validateCSRFToken($_POST['csrf_token']);
//get records from database
$sql = mysqli_query($mysqli,"SELECT * FROM products
LEFT JOIN categories ON product_category_id = category_id
@@ -293,6 +295,8 @@ if (isset($_POST['export_products_csv'])) {
if (isset($_POST['add_product_stock'])) {
validateCSRFToken($_POST['csrf_token']);
enforceUserPermission('module_sales', 2);
$product_id = intval($_POST['product_id']);

View File

@@ -8,6 +8,8 @@ defined('FROM_POST_HANDLER') || die("Direct file access is not allowed");
if (isset($_POST['add_tag'])) {
validateCSRFToken($_POST['csrf_token']);
require_once 'tag_model.php';
mysqli_query($mysqli,"INSERT INTO tags SET tag_name = '$name', tag_type = $type, tag_color = '$color', tag_icon = '$icon'");