fix(security): resolve F-02 — parameterize SQL queries in WaterLevelController index()

This commit is contained in:
root
2026-05-28 16:26:33 +08:00
parent e9fa6a2912
commit d95cb57275

View File

@@ -23,20 +23,19 @@ class WaterLevelController extends Controller
$sqlDate = \Carbon\Carbon::parse($displayDate)->format('Y-m-d H:i:s'); $sqlDate = \Carbon\Carbon::parse($displayDate)->format('Y-m-d H:i:s');
$bindings = [];
$stationCondition = ''; $stationCondition = '';
$dateCondition = ''; $dateCondition = '';
if($stationFilter) if($stationFilter)
{ {
$stationCondition = " WHERE s.stationid = '{$stationFilter}' "; $stationCondition = " WHERE s.stationid = ? ";
$bindings[] = $stationFilter;
} }
if ($dateFilter) { if ($dateFilter) {
$dateCondition = " AND w.datetime = ? ";
$bindings[] = $sqlDate;
$dateCondition = " AND w.datetime = '{$sqlDate}' ";
} else { } else {
$dateCondition = " $dateCondition = "
AND w.datetime = ( AND w.datetime = (
SELECT MAX(datetime) SELECT MAX(datetime)
@@ -44,7 +43,6 @@ class WaterLevelController extends Controller
WHERE w2.stationid = s.stationid WHERE w2.stationid = s.stationid
) )
"; ";
} }
$wldata =collect(DB::select(" $wldata =collect(DB::select("
SELECT s.*, w.* SELECT s.*, w.*
@@ -54,7 +52,7 @@ class WaterLevelController extends Controller
$stationCondition $stationCondition
$dateCondition $dateCondition
ORDER BY s.name ASC ORDER BY s.name ASC
")); ", $bindings));
$stations = DB::table('station')->select('stationid', 'name') $stations = DB::table('station')->select('stationid', 'name')