]> git.openstreetmap.org Git - nominatim.git/commitdiff
properly escape class parameter
authorSarah Hoffmann <lonvia@denofr.de>
Sat, 2 May 2020 19:54:14 +0000 (21:54 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 2 May 2020 19:54:14 +0000 (21:54 +0200)
The class parameter was used as is, allowing for potential
SQL injection via the API.

Thanks to @bladeswords for finding this.

website/details.php

index 39fa0afa901ff01ab8531b5df31896fac8be3ed9..6f7c807d88d58890ec235ec0f519833a7c2ca0c1 100644 (file)
@@ -37,12 +37,14 @@ if ($sOutputFormat == 'html' && !$sPlaceId && !$sOsmType) {
 
 if ($sOsmType && $iOsmId > 0) {
     $sSQL = 'SELECT place_id FROM placex WHERE osm_type = :type AND osm_id = :id';
+    $aSQLParams = array(':type' => $sOsmType, ':id' => $iOsmId);
     // osm_type and osm_id are not unique enough
     if ($sClass) {
-        $sSQL .= " AND class='".$sClass."'";
+        $sSQL .= ' AND class= :class';
+        $aSQLParams[':class'] = $sClass;
     }
     $sSQL .= ' ORDER BY class ASC';
-    $sPlaceId = $oDB->getOne($sSQL, array(':type' => $sOsmType, ':id' => $iOsmId));
+    $sPlaceId = $oDB->getOne($sSQL, $aSQLParams);
 
 
     // Nothing? Maybe it's an interpolation.