فهرست منبع

[SQLiteProfilerStorage] Escape special chars in URLs and IPs

Victor Berchet 14 سال پیش
والد
کامیت
9770944a1d
1فایلهای تغییر یافته به همراه7 افزوده شده و 5 حذف شده
  1. 7 5
      src/Symfony/Component/HttpKernel/Profiler/SQLiteProfilerStorage.php

+ 7 - 5
src/Symfony/Component/HttpKernel/Profiler/SQLiteProfilerStorage.php

@@ -40,21 +40,23 @@ class SQLiteProfilerStorage implements ProfilerStorageInterface
      */
     public function find($ip, $url, $limit)
     {
-        $db = $this->initDb();
-
         $criteria = array();
+        $args = array();
 
         if ($ip = preg_replace('/[^\d\.]/', '', $ip)) {
-            $criteria[] = " ip LIKE '%".$ip."%'";
+            $criteria[] = 'ip LIKE :ip';
+            $args[':ip'] = '%'.$ip.'%';
         }
 
         if ($url) {
-            $criteria[] = " url LIKE '%".$db->escapeString($url)."%'";
+            $criteria[] = 'url LIKE :url ESCAPE "\"';
+            $args[':url'] = '%'.addcslashes($url, '%_').'%';
         }
 
         $criteria = $criteria ? 'WHERE '.implode(' AND ', $criteria) : '';
 
-        $tokens = $this->fetch($db, 'SELECT token, ip, url, time FROM data '.$criteria.' ORDER BY time DESC LIMIT '.((integer) $limit));
+        $db = $this->initDb();
+        $tokens = $this->fetch($db, 'SELECT token, ip, url, time FROM data '.$criteria.' ORDER BY time DESC LIMIT '.((integer) $limit), $args);
         $this->close($db);
 
         return $tokens;