瀏覽代碼

ZF-8671: Fix to make the sign method use rawurlencode instead of urlencode.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19977 44c647ce-9c0f-0410-b52a-842ac1e357ba
sidhighwind 16 年之前
父節點
當前提交
04fdc068ef
共有 2 個文件被更改,包括 17 次插入1 次删除
  1. 1 1
      library/Zend/Service/Amazon/Ec2/Abstract.php
  2. 16 0
      tests/Zend/Service/Amazon/Ec2/AbstractTest.php

+ 1 - 1
library/Zend/Service/Amazon/Ec2/Abstract.php

@@ -240,7 +240,7 @@ abstract class Zend_Service_Amazon_Ec2_Abstract extends Zend_Service_Amazon_Abst
 
         $arrData = array();
         foreach($paramaters as $key => $value) {
-            $arrData[] = $key . '=' . str_replace("%7E", "~", urlencode($value));
+            $arrData[] = $key . '=' . str_replace("%7E", "~", rawurlencode($value));
         }
 
         $data .= implode('&', $arrData);

+ 16 - 0
tests/Zend/Service/Amazon/Ec2/AbstractTest.php

@@ -79,6 +79,17 @@ class Zend_Service_Amazon_Ec2_AbstractTest extends PHPUnit_Framework_TestCase
             // do nothing
         }
     }
+    
+    public function testSignParamsWithSpaceEncodesWithPercentInsteadOfPlus()
+    {
+        $class = new TestAmamzonAbstract('TestAccessKey', 'TestSecretKey');
+        $ret = $class->testSign(array('Action' => 'Space Test'));
+        
+        // this is the encode signuature with urlencode - It's Invalid!
+        $invalidSignature = 'EeHAfo7cMcLyvH4SW4fEpjo51xJJ4ES1gdjRPxZTlto=';
+        
+        $this->assertNotEquals($ret, $invalidSignature);
+    }
 }
 
 class TestAmamzonAbstract extends Zend_Service_Amazon_Ec2_Abstract
@@ -88,5 +99,10 @@ class TestAmamzonAbstract extends Zend_Service_Amazon_Ec2_Abstract
     {
         return $this->_region;
     }
+    
+    public function testSign($params)
+    {
+        return $this->signParameters($params);
+    }
 }