fix: sql injection vulnerability when using filters (#214)

This commit is contained in:
Miguel Ribeiro 2024-03-10 09:25:33 +01:00 committed by GitHub
parent d736f91fd5
commit cbdc188e5e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 9 deletions

View File

@ -29,27 +29,33 @@
} }
} }
$params = array();
$sql = "SELECT * FROM subscriptions WHERE 1=1"; $sql = "SELECT * FROM subscriptions WHERE 1=1";
if (isset($_GET['category']) && $_GET['category'] != "") { if (isset($_GET['category']) && $_GET['category'] != "") {
$category = $_GET['category']; $sql .= " AND category_id = :category";
$sql .= " AND category_id = $category"; $params[':category'] = $_GET['category'];
} }
if (isset($_GET['payment']) && $_GET['payment'] != "") { if (isset($_GET['payment']) && $_GET['payment'] != "") {
$payment = $_GET['payment']; $sql .= " AND payment_method_id = :payment";
$sql .= " AND payment_method_id = $payment"; $params[':payment'] = $_GET['payment'];
} }
if (isset($_GET['member']) && $_GET['member'] != "") { if (isset($_GET['member']) && $_GET['member'] != "") {
$member = $_GET['member']; $sql .= " AND payer_user_id = :member";
$sql .= " AND payer_user_id = $member"; $params[':member'] = $_GET['member'];
} }
$sql .= " ORDER BY $sort $order, inactive ASC"; $sql .= " ORDER BY $sort $order, inactive ASC";
$stmt = $db->prepare($sql);
$result = $db->query($sql);
foreach ($params as $key => $value) {
$stmt->bindValue($key, $value);
}
$result = $stmt->execute();
if ($result) { if ($result) {
$subscriptions = array(); $subscriptions = array();
while ($row = $result->fetchArray(SQLITE3_ASSOC)) { while ($row = $result->fetchArray(SQLITE3_ASSOC)) {

View File

@ -1,3 +1,3 @@
<?php <?php
$version = "v1.15.2"; $version = "v1.15.3";
?> ?>