보안 패치 SUPEE-9767-가능한 문제?


108

16 가지 APPSEC 문제를 해결하는 새로운 보안 패치가 Magento 1 용으로 제공됩니다 : https://magento.com/security/patches/supee-9767

CVSSv3 Severity에 대해 취약점 7 개 중 8.0 이상이 악의적 인 것으로 악용되고 있기 때문에 이는 중요한 패치입니다. 사이트는 SUPEE-9767을 적용 하거나 새 릴리스 CE 1.9.3.3 / EE 1.14.3.3으로 업데이트 할 수 있습니다 .

SUPEE-9767을 적용 할 때주의해야 할 일반적인 문제점 또는 함정은 무엇입니까?


2017-07-12 업데이트 :

Magento는 초기 패치의 많은 문제를 해결하기 위해 SUPEE-9767 V2CE 1.9.3.4 를 발표했습니다 . V1을 적용한 경우 되돌리고 V2를 적용해야합니다. 아직 패치하지 않은 경우 V2 만 적용하면 여기에 제기 된 대부분의 문제는 관련이 없습니다.


"CVSSv3 심각도에 대해 취약점 7 개 중 8.0 이상이 악의적 인 것으로 악용되고 있으며, 이는 중요한 패치입니다." 방금 확인하고 싶었던 "공격자"는 관리자에게 이러한 공격을 수행해야합니까?
PaddyD 2016 년

3
네, 당신은 악용하기 위해 관리자 액세스 권한이 있어야합니다 ...
MagenX

패치는 일반적인 무차별 대입 종점 (예 : / rss / order / new)을 중지하지 않는 것 같습니다.이 방법은 보터가 관리 영역에 액세스하려는 가장 일반적인 방법 인 것 같습니다.
Ricky Odin Matthews

1
나는 이것을 .htaccess의 RSS @RickyOdinMatthews에 사용합니다 RewriteRule ^/?(index.phprss|index.php/rss/catalog|index.php/rss/order|rss/catalog|rss/order).*$ /no-route [R=301,L,NC]
Richard Feraro

@RichardFeraro 나는 nginx를 사용하지만 이미 비슷한 솔루션을 사용합니다. 봇이 일반적으로 이러한 엔드 포인트를 검색하고 무차별 강제하는 것으로 나타났습니다.
Ricky Odin Matthews

답변:


107

여기에 패치를 파고 난 후의 내 개요가 있습니다.

타임 세이버 : Experius는 사용자 지정 테마, 사용자 지정 모듈 또는 로컬 덮어 쓰기에서 수동으로 패치해야 할 파일을 찾는 데 도움이 되는 패치 도우미를 제공합니다 . https://github.com/experius/Magento- 1-Experius- 패치 도우미 #magento

결제 양식 키

다른 게시물에서 언급했듯이이 패치는 다음 양식에 양식 키를 추가합니다.

배송 장바구니 양식 :

app/design/frontend/<package>/<theme>/template/checkout/cart/shipping.phtml

다중 배송 결제 체크 아웃 양식 :

app/design/frontend/<package>/<theme>/template/checkout/multishipping/billing.phtml

멀티 배송 배송 체크 아웃 양식 :

app/design/frontend/<package>/<theme>/template/checkout/multishipping/shipping.phtml

다중 배송 주소 체크 아웃 양식 :

app/design/frontend/<package>/<theme>/template/checkout/multishipping/addresses.phtml

결제 체크 아웃 양식 :

app/design/frontend/<package>/<theme>/template/checkout/onepage/billing.phtml

배송 결제 양식 :

app/design/frontend/<package>/<theme>/template/checkout/onepage/shipping.phtml

결제 결제 양식 :

app/design/frontend/<package>/<theme>/template/checkout/onepage/payment.phtml

배송 방법 체크 아웃 양식 :

app/design/frontend/<package>/<theme>/template/checkout/onepage/shipping_method.phtml

영구 결제 체크 아웃 양식 :

app/design/frontend/<package>/<theme>/template/persistent/checkout/onepage/billing.phtml

그 외에도 다음 JS 파일이 해당 변경 사항과 호환되도록 업데이트되었습니다.

  • js/varien/payment.js
  • skin/frontend/base/default/js/opcheckout.js

해야 할 일 :

해당 템플릿의 사용자 정의 버전과 함께 사용하는 경우 다음 코드를 템플릿에 추가하여 업데이트해야합니다.

<?php echo $this->getBlockHtml('formkey') ?>

타사 결제 모듈을 사용하는 경우 업데이트 된 버전의 모듈을 제공 할 수 있도록 연락해야합니다.

또한 이전에 나열된 JS 파일의 사용자 정의 버전이있는 경우 해당 파일도 업데이트해야합니다.

시간을 절약하십시오 :

Fabian Schmengler는 당신을 위해 모든 것을 업데이트하는 멋진 작은 스크립트를 작성했습니다. 여기에서 찾을 수 있습니다.

https://gist.github.com/schmengler/c42acc607901a887ef86b4daa7a0445b

중요 참고 : 체크 아웃 폼키 유효성 검사는 백엔드에서 시스템> 구성> 관리> 보안> 체크 아웃시 폼 키 유효성 검사 활성화 아래의 새로운 구성 필드를 통해 변경할 수 있습니다 . 기능은 기본적으로 활성화되어 있지 않으므로이 보안 기능을 활용하려면이를 활성화해야합니다 !!! 활성화되지 않은 경우 백엔드에 알림이 표시됩니다.

이미지 업로드 콜백

이미지 갤러리 컨트롤러가 유효성 검사 콜백을 추가하도록 업데이트되었습니다.

해야 할 일

다음과 같은 코드로 이미지를 업로드하는 사용자 정의 모듈을 사용하는 경우 :

        $uploader = new Mage_Core_Model_File_Uploader('image');
        $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
        $uploader->addValidateCallback('catalog_product_image',
            Mage::helper('catalog/image'), 'validateUploadFile');
        $uploader->setAllowRenameFiles(true);
        $uploader->setFilesDispersion(true);

그 뒤에 다음 조각을 추가하여 해당 코드를 업데이트하는 것이 좋습니다.

        $uploader->addValidateCallback(
            Mage_Core_Model_File_Validator_Image::NAME,
            Mage::getModel('core/file_validator_image'),
            'validate'
        );

심볼릭 링크

이 패치는 백엔드에서 템플릿 심볼릭 링크를 허용하는 시스템 구성 필드를 제거합니다. 이전에는 시스템> 구성> 개발자> 템플릿> 심볼릭 링크 허용 아래있었습니다 . 이제 전체 템플릿 섹션이 사라졌습니다.

또한 해당 필드는 기본적으로 app/etc/config.xml

여기서 재미있는 점은 패치 이전에 해당 구성 필드를 사용하도록 설정 한 경우에는 백엔드에 알림이 표시되지만 필드가 없어지면 해당 필드를 비활성화 할 수 없다는 것입니다.

이를 수행하는 유일한 방법은 다음 SQL 쿼리를 실행하는 것입니다.

UPDATE core_config_data SET value = 0 WHERE path = "dev/template/allow_symlink";

설명

먼저 Symlink 수정의 목적을 이해하는 데 도움이되는 두 개의 게시물을 확인하는 것이 좋습니다.

이 수정은 실제로 템플릿 지시문을 통해 이미지와 같은 업로드 가능한 컨텐츠를 호출하는 것에 관한 것입니다.

심볼릭 링크와 관련된 문제는 관리자 액세스로만 이용할 수 있으며 Magento는 이미지 업로드에 대한 보호 기능을 추가했습니다.

그것들은 설정 자체뿐만 아니라 그것을 악용하는 알려진 방법에 대한 보호 기능입니다.

해야 할 일 : 나와 같은 경우 템플릿 심볼릭 링크와 함께 modman 또는 composer를 사용하는 경우 몇 가지 문제에 직면하게됩니다. 나는 아직도 SQL 쿼리를 다루는 것 외에 여기서 가장 좋은 일을 찾으려고 노력하고 있습니다.

이 문제와 관련된 주요 게시물 : SUPEE-9767, modman 및 symlinks

가능한 문제 목록

원래 게시물 이후 V2가 릴리스되었습니다. 업그레이드하는 것을 잊지 마십시오

버그

'확인 된'이라는 단어는 확인 된 버그에 사용됩니다. 존재하지 않으면 버그 일 수 있지만 아직 확인되지 않은 것입니다.

덩어리 실패 문제

이러한 모든 문제는 원본 파일을 수정했기 때문에 발생할 수 있으며, 그렇지 않은지 다시 확인하십시오.

  • Hunk Failed 오류가 발생한 파일을 백업하십시오.
  • Magento 버전에서 원본 파일을 다운로드하십시오.
  • 두 파일 비교

파일이 다른 경우 원래 파일로 패치를 적용해야하며 다음과 같이 사용자 지정 변경 내용을 새로 적용하십시오.

  • 사용자 정의 테마 폴더의 사용자 정의 템플릿
  • local.xml
  • 앱 / 코드 / 로컬 파일

파일이 다르면 권한 문제이거나 패치의 "버그"입니다.


1
@ 아이콘 nope. 다시 한 번 확인하려면 답의 맨 위에서 참조한 도구
Digital Pianism의 Raphael

1
"기타 문제"목록에 추가하기 만하면 최신 버전에서도 magento.stackexchange.com/questions/167616/… 이 수정되지 않은 것으로 보입니다.
Anton Boritskiy

1
@RaphaelatDigitalPianism : magento.stackexchange.com/q/177560/51361

1
이 목록에 추가 된 또 다른 요소 : 패치는 기본 테마 magento.stackexchange.com/questions/177681/…에
Aad Mathijssen

1
'투명 할 때 워터 마크에 검은 색 배경이 나타납니다.'-이것이 올바른지 확인할 수 있습니다. 당신이 어떤 투명 CMS의 PNG 업로드 할 때 발생
pixiemedia

42

Issue1 : 한 페이지를 체크 아웃 할 때 form_key가 유효하지 않음

마 젠토 form_key는 대부분의 양식을 추가 합니다.

당신이 가지고 있다면 using default onepage and using custom theme, 당신은 form_key각 단계마다 체크 아웃 할 때 ** 이슈를 받기 시작할 것입니다 **;

당신은 양식 키를 추가해야합니다 <?php echo $this->getBlockHtml('formkey') ?>

아래 파일이 종료되는 경우 각 체크 아웃 단계 파일의 양식

  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/billing.phtml
  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/payment.phtml
  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/shipping.phtml

  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/shipping_method.phtml

템플릿 파일이 기본 테마에서 호출하는 경우 문제가 발생하지 않습니다. patch가 자동으로 해당 파일을 업데이트하기 때문입니다.

또한 참고 : <?php echo $this->getBlockHtml('formkey') ?>항상 양식 태그 안에 있어야합니다

 <form action="" .....>
     <fieldset>
      .......
       <?php echo $this->getBlockHtml('formkey') ?>
     </fieldset>
 </form>

** Magento 다중 배송 체크 아웃을 사용하는 경우 다음을 수행해야합니다.

아래 파일들 :

문제 2 : 장바구니 페이지의 배송 견적 양식에 form_key 문제 :

장바구니 페이지에서 예상 운송 형태로 form_key 추가

그런 다음 양식 키를 추가해야합니다 <?php echo $this->getBlockHtml('formkey') ?>

...에서 app/design/frontend/{Your_Package}/{YOUR_THEME]/template/checkout/cart/shipping.phtml

Issue3 : 마 젠토 한 페이지 체크 아웃 opcheckout.js 오류

당신이 사용하는 경우 기본 onepage 체크 아웃을 하고있는 opcheckout.js 후 확인해야

if (elements[i].name=='payment[method]' || elements[i].name == 'form_key') {opcheckout.js 에서 사용할 수 있습니다

종료되지 않은 경우 교체

if (elements [i] .name == 'payment [method]') {

if (elements [i] .name == 'payment [method]'|| elements [i] .name == 'form_key') {

issue1, issue2, issue3의 경우 @FabianSchmengler의 스크립트 add-checkout-form-key.sh를 사용하여 Issue를 쉽게 수정할 수 있습니다 . 그것은 당신의 수용 테마 파일에 문제를 해결합니다

문제 4 : Mage_Customer_Model_Session을 다시 쓸 때 고객 로그인 후 잘못된 양식 키

만약 Mage_Customer_Model_Session클래스 재 작성 또는 호출 한

app/code/local/Mage/Customer/Model/Session.php세션 setCustomerAsLoggedIn()에서 고객이 설정 한 후 /를 사용하여 세션에 대한 고객을 설정하면 form_key 문제가 발생할 수 있습니다 .

이 경우 추가해야합니다

마법사 :: getSingleton ( 'core / session')-> renewFormKey ();

에서 setCustomerAsLoggedIn () 의 호출 전에

Mage::dispatchEvent('customer_login', array('customer'=>$customer));

  public function setCustomerAsLoggedIn($customer)
    {
        $this->setCustomer($customer);
        $this->renewSession();
        // add this  for patch -9767
        Mage::getSingleton('core/session')->renewFormKey();
       // end this for patch 9767
        Mage::dispatchEvent('customer_login', array('customer'=>$customer));
        return $this;
    }

Issue5 : 로그 아웃 후 Form_key 문제

세션 에서 고객을 로그 아웃 한 후 Mage_Customer_Model_Session클래스가 다시 쓰거나

app/code/local/Mage/Customer/Model/Session.php

이 경우에도 동일한 요구가 있습니다.

   protected function _logout()
    {
        $this->setId(null);
        $this->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
        $this->getCookie()->delete($this->getSessionName());
// add this  for patch -9767
Mage::getSingleton('core/session')->renewFormKey();
        return $this;
    }

추천:

권장 사항 1 : supee-9767 문제를 해결 하려면 https://github.com/experius/Magento-1-Experius-Patch-Helper 패치를 사용할 수 있습니다

이것은 현재로서는 최고의 솔루션입니다.

참고 난 강력하게 취할 것을 권장하고 그렇게하기 전에, 파일 및 데이터베이스 백업 또는 전체 시스템 백업을.


권장 사항 2 : ONESTEP CHECKOUT에서 패치 기능 사용

ONESTEP CHECKOUT을 사용하는 경우 보안 목적으로 패치 supee-9767이 릴리스되면 onestep checkout controller의 SAVE 조치에 form_key 유효성 검증을 추가해야합니다 .

배송 방법 세부 정보를 저장하기 위해 원스텝 체크 아웃에서 saveShippingmethod ()를 사용한다고 가정하면 추가해야합니다.

if ($this->isFormkeyValidationOnCheckoutEnabled() && !$this->_validateFormKey()) {
           return;
      }

또한 onestep <?php echo $this->getBlockHtml('formkey') ?> checkout phtml files each section 에서 form key 를 추가 해야합니다.

관련 링크

https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/


1
결제시 양식 키에 대한 사용자 정의 템플릿 파일을 찾을 수있는 훌륭하고 빠른 1 라이너. 앱 / 디자인 / 프런트 엔드 찾기 | grep -E "checkout / onepage / (청구 | 지불 | shipping | shipping_method) .phtml"| grep -v "base / default"| grep -v "rwd / default"
Peter Jaap Blaakmeer 2012 년

6
또는 약간 더 긴 하나 라이너 즉시 업데이트 : gist.github.com/schmengler/c42acc607901a887ef86b4daa7a0445b
파비안 Schmengler

저것은 @FabianSchmengler 마술입니다 !!! :)
Amit Bera

@FabianSchmengler 굉장합니다.
피터 Jaap Blaakmeer

1
@AmitBera 참고 : 일부 결제 플러그인은 AJAX를 사용하여 청구 / 배송 / 등을 제출합니다. 난 그냥 하나를 패치했다. <script> var formKey = "<? php echo Mage :: getSingleton ( 'core / session')-> getFormKey ();?>"; </ script>를 주제의 헤드로 그런 다음 form_key : formKey를 AJAX 제출에 매개 변수로 추가 할 수 있습니다. 물론 새 매개 변수의 제출을 ​​확인한 후 양식을 테스트하고 게시물에서 언급 한대로 처리하도록 Controller를 편집하십시오.
Kalvin Klien 2016 년

26

패치 파일을 검토 할 때 첫 번째 패스를 기반으로 ...

  • 새로운 설정 admin/security/validate_formkey_checkout이 추가되었습니다. 설정하면 양식 키가 있는지 체크 아웃 양식을 확인합니다. 템플릿 파일이 테마에서 재정의되는 경우 템플릿 파일을 업데이트해야합니다. 이 설정은 기본적으로 꺼져있는 것 같습니다
  • 기본적으로 심볼릭 링크가 허용되지 않는 것 같습니다 ( app/etc/config.xml). 또한이를 허용하는 기능이 관리자 구성에서 제거 된 것 같습니다. 그러나 사이트에서 이전에 명시 적으로 심볼릭 링크를 활성화 한 경우 설정이 데이터베이스에 저장되어이 변경 사항이 무시됩니다.
  • 이 패치를 적용 할 때 캐시와 전체 페이지 캐시를 모두 지워야합니다. 디자인 예외는 디코딩과 호환되지 않는 형식으로 저장됩니다. 페이지 캐시를 비우지 않으면 "디코딩 실패 : 구문 오류"와 같은 오류가 표시됩니다.

1
당신은 또한 단지 16 진수 편집기에 가서 데이터베이스 자신에게 추가 할 수 있지만 그건 좀 대부분의 사람들이 많이있을 수 있었다
고양이

1
cloudflare와 같은 일부 CDN을 사용하는 경우 캐시를 제거해야합니다. CDN이 활성화 된 상태에서 결제를 시도했지만 결제 페이지를지나 가지 않습니다. 캐시를 제거하고 개발 모드를 활성화 한 순간 모든 것이 좋아졌습니다.
Icon

14

base/default이 패치의 영향을받는 파일 아래 에서이 파일이 테마에있는 경우 적절하게 변경하십시오.

app/design/frontend/base/default/template/checkout/cart/shipping.phtml

app/design/frontend/base/default/template/checkout/multishipping/billing.phtml

app/design/frontend/base/default/template/checkout/multishipping/shipping.phtml

app/design/frontend/base/default/template/checkout/onepage/billing.phtml

app/design/frontend/base/default/template/checkout/onepage/payment.phtml

app/design/frontend/base/default/template/checkout/onepage/shipping.phtml

app/design/frontend/base/default/template/checkout/onepage/shipping_method.phtml

app/design/frontend/base/default/template/persistent/checkout/onepage/billing.phtml

phtml아래의 모든 파일 에서 양식 키 라인이 추가되었으므로 해당 phtml 파일에이 라인을 추가하십시오.

 <?php echo $this->getBlockHtml('formkey') ?>

위의 문제에서 @fabian은 테마 파일에도 양식 키를 추가하는 스크립트를 만들었습니다.

https://gist.github.com/schmengler/c42acc607901a887ef86b4daa7a0445b

보안 패치를 적용한 후 양식 키에 오류가 발생하면이 패치를 적용 할 수 있습니다.이 패치 프로세스를 적용하는 것은 보안 패치와 동일합니다.

  sh filename.sh

파일의 한 base/default변경Js

  skin/frontend/base/default/js/opcheckout.js

이 경우 js 파일이 테마에서로드되는 아래 단계를 수행하십시오.

블로우 라인 제거

 if (elements[i].name=='payment[method]') {

위 대신에 아래 줄을 추가하십시오.

 if (elements[i].name=='payment[method]' || elements[i].name == 'form_key') {

편집하다

아래 파일보다 우선하는 체크 아웃 확장자를 사용하는 경우 체크 아웃 확장자의 phtml 파일에 양식 키 라인을 추가하십시오.

EDIT2-문제

1) saveBillingAction ( ) 오류 또는 폼 키 null을 얻거나 폼 키 문제 : 패치 9767이 잘못된 폼 키를 가져옵니다

2) Hunk # 1 FAILED at 225. 1 Hunk FAILED 중 1 개-파일 app / design / frontend / enterprise / default / template / persistent / checkout / onepage / billing.phtml에 대한 거부 저장 ​​: SUPEE-9767-Hunk # 1 225에서 실패 1 덩어리에서 1 실패

3) app / code / core / Enterprise / PageCache / Model / Observer.php.rej 파일에 거부 저장 ​​: SUPEE-9767 오류 : 패치를 성공적으로 적용 / 복원 할 수 없습니다

4) SUPEE-9767, modman 및 symlinks : SUPEE-9767, modman 및 symlinks

5) app / design / frontend / rwd / default / layout / page.xml Hunk # 1 FAILED at 36. Hunk # 2 FAILED at 54. 2 Hunks 중 2 FAILED : SUPEE-9767 오류

6) 덩어리 1 개 중 1 개 실패-파일 app / code / core / Mage / Sales / Model / Quote / Item.php에 거부 저장 ​​: Magento 1.9.2.2 SUPEE-9767 패치 오류

7) onestep checkout error (이것은 폼 키 문제입니다) : SUPEE-9767 Magento CE 1.9.3.3 체크 아웃시 폼 키 유효성 검사와 함께 작동하지 않는

8) 1 단계 체크 아웃 고객 등록 문제 : SUPEE-9767 패치 / CE 1.9.3.3-1 페이지 체크 아웃-고객 등록 문제

9) app / code / core / Mage / Core / Model / File / Validator / Image.php : Image.php에서 Magento SUPEE 9697 1.9.2.2 실패


1
패치 버전 2가 곧 제공 될 예정입니다. 버그를 수정해야합니다.
Icon

1
@icon v2를 기다리고
Murtuza Zabuawala

9

새 Magento 설치에서 symlinks는 기본적으로 항상 비활성화되어 있습니다. admin YES / NO 구성 값의 기본값은 'NO'입니다. 이 업데이트는 config.xml에서 심볼릭 링크를 명시 적으로 비활성화하고 추가 예방 조치로 구성 옵션이 포함 된 admin-> developer에서 템플릿 섹션을 제거합니다.

1.9.3.2 이전에 심볼릭 링크를 수동으로 활성화 한 경우 현재 심볼릭 링크 설정에 영향을 미치지 않습니다. 관리자에서 더 이상 설정을 볼 수는 없지만 활성화 된 상태로 유지됩니다.

modagent 를 사용하여 Magento 1.x 모듈을 관리하는 사용자 는 심볼릭 모듈을 비활성화 할 수 있으므로 심볼릭 링크 를 비활성화하지 않아야합니다.

책임있는 관리자 는 app / code / core / Mage / Core / etc / system.xml에서 템플릿 섹션에 대한 diff 변경 사항을 찾은 다음 섹션 600 주위에서 system.xml에 섹션을 추가하여 symlink 관리 섹션을 다시 활성화 할 수 있습니다. 이중 확인 심볼릭 링크를 계속 사용할 수 있습니다

n98-magerun.phar 구성 : 덤프 | grep symlink

다음은 사용자 정의 / 확장 테마에 영향을 줄 수있는 기본 테마의 변경 사항을 식별하는 데 도움이되는 magento1933 및 magento1932의 diff 파일입니다.

diff -r magento1933 magento1932> https://pastebin.com/ADzMBLhr


그들이 Symlinks 옵션을 제거한 이유는 무엇입니까? 이제 대중에게 공개 된 (공용 사용자 외부에) 익스플로잇이 있습니까? 아니면 공유 환경에있을 경우에만 위험합니까?
PaddyD

이 글타래는 내 질문에 대답하는 것 같습니다 : magento.stackexchange.com/questions/176952/…
PaddyD

이유로 인해 심볼릭 링크가 비활성화되었습니다. symlink 대신 복사하는 것이 좋습니다. magento.stackexchange.com/a/177149/54863
Barryvdh

9

문제 : php7을 사용하면 때때로 다음과 같은 오류가 발생합니다.

Decoding failed: Syntax error

#0 /______/app/code/core/Enterprise/PageCache/Model/Observer.php(179): Zend_Json::decode('')
#1 /______/app/code/core/Enterprise/PageCache/Model/Observer.php(215): Enterprise_PageCache_Model_Observer->_loadDesignExceptions()
#2 /______/app/code/core/Enterprise/PageCache/Model/Observer.php(125): Enterprise_PageCache_Model_Observer->_saveDesignException()
#3 /______/app/code/core/Mage/Core/Model/App.php(1358): Enterprise_PageCache_Model_Observer->cacheResponse(Object(Varien_Event_Observer))
#4 /______/app/code/core/Mage/Core/Model/App.php(1337): Mage_Core_Model_App->_callObserverMethod(Object({custom extensio}_Model_Rewrite_PageCache_Observer), 'cacheResponse', Object(Varien_Event_Observer))
#5 /______/app/Mage.php(456): Mage_Core_Model_App->dispatchEvent('controller_fron...', Array)
#6 /______/app/code/core/Mage/Core/Controller/Varien/Front.php(182): Mage::dispatchEvent('controller_fron...', Array)
#7 /______/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#8 /______/app/Mage.php(691): Mage_Core_Model_App->run(Array)
#9 /______/index.php(105): Mage::run('brandfield_nl', 'store')
#10 {main}

Zend 버전과 관련이 있다고 확신합니다. 빠른 수정은 이것이지만 확실하지 않습니다.

-> app / code / core / Enterprise / PageCache / Model / Observer.php : 244로 바꾸십시오 :

    if ($cachedSslOffloaderHeader !== false) {
        $cachedSslOffloaderHeader = trim(@Zend_Json::decode($cachedSslOffloaderHeader));
    }

-> 및 app / code / core / Enterprise / PageCache / Model / Observer.php : 177 :

    if ($exceptions !== false) {
        $exceptions = Zend_Json::decode($exceptions);
    }

물론 이것을 다시 작성하기 위해 애드온을 작성하십시오. 그러나 나는 여기에 더 좋은 일이 있다고 확신합니다.

업데이트 (더 나은 솔루션)

-> : lib / Zend / Json.php로 이동하여 76 행 후에 다음을 추가하십시오.

    if ((float)phpversion() >= 7.0
        && empty($encodedValue)
    ) {
        return null;
    }

확장을 재정 의하여 확장하고 핵심 파일을 편집하지 마십시오.


캐시가 완전히 지워졌습니다. 이것은 같은 문제가 아닙니다.
folektoras133

2
app / code / core / Enterprise / PageCache / Model / Observer.php를 되 돌리면 문제가 해결되었지만 분명히 올바른 해결책은 아니며 예방입니다 a:5:{i:0;s:29:"Decoding failed: Syntax error";i:1;s:1376:"#0 app/code/core/Enterprise/PageCache/Model/Observer.php(177): Zend_Json::decode('a:0:{}')
Judder

9

문제 : 체크 아웃시 동적 코드 또는 CSS가 양식 키 입력 요소를 비활성화합니다.

여기서 내가 본 문제는 동적 코드 한 페이지 체크 아웃 과정에서이 (페이팔 플러스)를 덮어 필드 셋을 1 단계 결제 방법 양식 html에서 요소를 -숨겨진 form_key 요소를 삭제하거나 비활성화합니다 (css로).

해결 방법은 formkey 요소가 동적 코드 또는 CSS에 의해 비활성화 되지 않도록 하는 것입니다. fieldset 요소 외부에서 formkey 코드를 이동하면 도움이 될 수 있습니다.

<form>
    <?php echo $this->getBlockHtml('formkey') ?>
    <fieldset>
        <?php echo $this->getChildHtml('methods') ?>
    </fieldset>
</form>

결제 방법을 진행할 때 브라우저에서 ajax 네트워크 요청을 검사하여 form_key가 감지되어 하나의 페이지 컨트롤러로 전송되는지 쉽게 확인할 수 있습니다. 각 방법은 양식 인 경우 ajax 양식 데이터에 양식 키를 포함해야합니다. 키가 없지만 Magento 소스 코드가 패치되었습니다. 양식 키 요소에 영향을주는 외부 코드 (예 : CSS 또는 동적 클라이언트 측 변경)가 있는지 확인하십시오.

여기에 이미지 설명을 입력하십시오


2
이 픽스는 EE에서 작동하지 않는 것 같습니다. 파일 app/design/frontend/[package]/[theme]/template/giftcardaccount/onepage/payment/scripts.phtml 도 업데이트해야한다는 것을 || elements[i].name == 'form_key'알았습니다. form_key 양식 필드를 비활성화 상태로 유지하려면 35-38 행을 다른 선택기와 함께 포함하도록 업데이트해야합니다 .
Greg Nickoloff

감사합니다 g-man1066! 그것이 내가 가진 문제였습니다.
grafikchaos


8

문제 : 일반 Magento 5 단계 체크 아웃을 사용할 때 고객 등록이 실패합니다.

이 문제는 양식 키 인증을 활성화 할 때만 나타납니다. 사용 된 버전 : 1.7.0.2이지만 누군가가 1.9.3 버전에서도 동일한 문제가 발생하는 것으로 보입니다. SUPEE-9767 패치 / CE 1.9.3.3-한 페이지 체크 아웃-고객 등록 문제

결제로 이동하면 다음 두 가지 옵션이 제공됩니다. 손님 또는 등록자로서 체크 아웃 "등록"을 클릭하고 비밀번호와 함께 양식을 작성하면 모든 단계를 진행하여 주문을 완료합니다. 주문이 완료되었지만 고객은 magento에 등록되지 않습니다. 손님이 주문한 것 같습니다.

되돌아 가서 양식 키 인증을 사용 안함 으로 설정하고 고객으로 등록하는 동안 주문을 시도 했을 때 아무런 문제없이 배치되었으며 고객이 백엔드에 등록되었습니다.


1
다음은이 문제에 대한 더 자세한 포스트 magento.stackexchange.com/questions/177035/...
디지털 Pianism에서 라파엘

8

업데이트 13/07/2017 [문제가 해결됨]

Magento 팀은 이 패치 버전에서 SUPEE-9767 V2 를 출시 했으며 투명 GIF 및 PNG 문제가 해결되었습니다.

이 스레드에서 논의 된 파일의 모든 변경 사항을 되돌려 야합니다. 그런 다음 적용된 V1 패치를 되돌리고 마지막으로 새 버전 V2를 적용하십시오.


PRE-SUPEE-9767 V2

아래에 설명 된 코드를 사용하지 말고 패치의 V2를 적용하십시오. 아래에 설명 된 문제는이 버전에서 이미 수정되었습니다.

누군가 투명 패널에 문제가 있으면 관리자 패널에서 업로드 할 때 배경이 검은 색이됩니다. (제품에서)는 다음에 소개 된 이미지 업로드 콜백과 관련이 있습니다.

app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php

현재이 동작의 원인이 무엇인지 확실하지 않지만 콜백을 제거하면 이상한 동작이 사라지고 있음을 확인할 수 있습니다.

여기에 이미지 설명을 입력하십시오

최신 정보

좋아, SUPEE-9767에서 업데이트 된 기능을 발견했습니다. 이는 실제로 png의 투명도를 깨는 것입니다. 원래 이미지의 사본은 투명도없이 만들어집니다.

+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -87,10 +87,33 @@ public function setAllowedImageTypes(array $imageFileExtensions = array())
      */
     public function validate($filePath)
     {
-        $fileInfo = getimagesize($filePath);
-        if (is_array($fileInfo) and isset($fileInfo[2])) {
-            if ($this->isImageType($fileInfo[2])) {
-                return null;
+        list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
+        if ($fileType) {
+            if ($this->isImageType($fileType)) {
+                //replace tmp image with re-sampled copy to exclude images with malicious data
+                $image = imagecreatefromstring(file_get_contents($filePath));
+                if ($image !== false) {
+                    $img = imagecreatetruecolor($imageWidth, $imageHeight);
+                    imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
+                    switch ($fileType) {
+                        case IMAGETYPE_GIF:
+                            imagegif($img, $filePath);
+                            break;
+                        case IMAGETYPE_JPEG:
+                            imagejpeg($img, $filePath, 100);
+                            break;
+                        case IMAGETYPE_PNG:
+                            imagepng($img, $filePath);
+                            break;
+                        default:
+                            return;
+                    }
+                    imagedestroy($img);
+                    imagedestroy($image);
+                    return null;
+                } else {
+                    throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
+                }
             }
         }
         throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));

최신 정보

다음은 png 투명도를 유지하기 위해 업데이트 된 함수 버전입니다.

  imagealphablending($img, false);
  imagesavealpha($img, true);

이 두 줄은 패치에 추가해야합니다. 기능 업데이트app/code/core/Mage/Core/Model/File/Validator/Image.php

/**
 * Validation callback for checking is file is image
 *
 * @param  string $filePath Path to temporary uploaded file
 * @return null
 * @throws Mage_Core_Exception
 */
public function validate($filePath)
{
    list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
    if ($fileType) {
        if ($this->isImageType($fileType)) {
            //replace tmp image with re-sampled copy to exclude images with malicious data
            $image = imagecreatefromstring(file_get_contents($filePath));
            if ($image !== false) {
                $img = imagecreatetruecolor($imageWidth, $imageHeight);
                imagealphablending($img, false);
                imagesavealpha($img, true);  
                imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                switch ($fileType) {
                    case IMAGETYPE_GIF:
                        imagegif($img, $filePath);
                        break;
                    case IMAGETYPE_JPEG:
                        imagejpeg($img, $filePath, 100);
                        break;
                    case IMAGETYPE_PNG:
                        imagepng($img, $filePath);
                        break;
                    default:
                        return;
                }
                imagedestroy($img);
                imagedestroy($image);
                return null;
            } else {
                throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
            }
        }
    }
    throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}

업데이트 23/06/17

이 업데이트 된 기능 버전은 PNG 및 GIF 투명도를 수정합니다.

    /**
 * Validation callback for checking is file is image
 *
 * @param  string $filePath Path to temporary uploaded file
 * @return null
 * @throws Mage_Core_Exception
 */
public function validate($filePath)
{
    list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
    if ($fileType) {
        if ($this->isImageType($fileType)) {
            //replace tmp image with re-sampled copy to exclude images with malicious data
            $image = imagecreatefromstring(file_get_contents($filePath));
            if ($image !== false) {
                $img = imagecreatetruecolor($imageWidth, $imageHeight);
                switch ($fileType) {
                    case IMAGETYPE_GIF:
                        imagecolortransparent($img, imagecolorallocatealpha($img, 0, 0, 0, 127));
                        imagealphablending($img, false);
                        imagesavealpha($img, true);
                        imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                        imagegif($img, $filePath);
                        break;
                    case IMAGETYPE_JPEG:
                        imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                        imagejpeg($img, $filePath, 100);
                        break;
                    case IMAGETYPE_PNG:
                        imagealphablending($img, false);
                        imagesavealpha($img, true);  
                        imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                        imagepng($img, $filePath);
                        break;
                    default:
                        return;
                }
                imagedestroy($img);
                imagedestroy($image);
                return null;
            } else {
                throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
            }
        }
    }
    throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}

1
이것은 Magento 1.7 설치에서 내 문제를 해결했습니다. 감사!
Tjitse 2016 년

문제 없음 Tjitse는 Magento 팀이 패치를 수정하지 않은 경우 다음 패치를 수행 할 때 되돌려 야 할 경우를 대비하여이 변경 사항을 기록해 둡니다. bugcrowd.com의 커뮤니티에 문제를 제출했으며 곧 패치 수정 프로그램이 도입되기를 바랍니다.
Daniel Yovchev

이것은 png에 대해서는 수정되지만 투명한 gif 파일에는 수정되지 않습니다. gif 파일은 imagecolortransparent를 사용하여 약간 다른 처리가 필요합니다
대체 :

이것을 지적 해 주셔서 감사합니다 .gif 투명도를 수정하는 업데이트 된 기능을 참조하십시오.
Daniel Yovchev

7

문제 : 관리자에게 symlink 알림 허용이 표시되지 않음

symlink 알림은 관리자 알림 영역에 표시되지 않으므로 관리자 알림 영역에 표시되지 않습니다. <block type="core/text_list" name="notifications" as="notifications">

아래의 CE 및 EE 용 패치 :

--- app/design/adminhtml/default/default/layout/main.xml
+++ app/design/adminhtml/default/default/layout/main.xml
@@ -119,7 +119,8 @@ Default layout, loads most of the pages
<block type="adminhtml/cache_notifications" name="cache_notifications" template="system/cache/notifications.phtml"></block>
<block type="adminhtml/notification_survey" name="notification_survey" template="notification/survey.phtml"/>
<block type="adminhtml/notification_security" name="notification_security" as="notification_security" template="notification/security.phtml"></block>
-            </block>
+                <block type="adminhtml/checkout_formkey" name="checkout_formkey" as="checkout_formkey" template="notification/formkey.phtml"/></block>
+                <block type="adminhtml/notification_symlink" name="notification_symlink" template="notification/symlink.phtml"/>
<block type="adminhtml/widget_breadcrumbs" name="breadcrumbs" as="breadcrumbs"></block>
<!--<update handle="formkey"/> this won't work, see the try/catch and a jammed exception in Mage_Core_Model_Layout::createBlock() -->

문제는 </block>checkout_formkey (자기 종료되는) 말미에 부모를 닫습니다 notifications. 이로 인해에 notification_symlink포함 core/text_list되지 않고 렌더링되지 않습니다.


이것은 실제로 문제가 아니며 symlink가 명시 적으로 비활성화되어 있고 symlink 구성 섹션이 제거되어 알림이 제거되었습니다. v1933에서는 admin에서 symlink 값을 수동으로 변경할 수 없으므로 관리자 알림 표시는 의미가 없습니다. 문제는 symlink를 필요로하는 사용자, 즉 modman을 위해 더 이상 수동으로이를 활성화 할 수없는 새로운 1933 설치에 대한 것입니다. Magento가 새로운 1.x 설치를 기대하지 않는다고 추측 할 수 있습니다.
paj

동의하지 않습니다.이 패치는 구성이 이미 설정된 경우 명시 적으로 구성을 비활성화하지 않습니다. 아직 설정되지 않은 경우에만 구성을 비활성화합니다. 따라서이 패치 이전에 DB / local.xml에서 인스턴스가 dev / template / allow_symlink를 yes로 설정하고 패치를 적용하면 심볼릭 링크가 잠재적으로 취약하므로 허용 될 수 있다는 경고를 받아야합니다.
mwylde 2016 년

나는 당신의 요점을보고, 당신은 옳습니다. 그러나 일반 사용자의 경우 수행 할 작업-구성 옵션이 제거되어 admin에서 수동으로 비활성화 할 수 없습니다. 그것은 약간의 캐치 22 상황입니다 ...
paj

7

#patchday를위한 작은 팁; 설치를 통해 1.9.3.3을 복사 한 후 다음을 실행하십시오.git diff -w --stat | grep -v " 2 +" | grep -v " 0" 파일에서 더 큰 변경 사항을 빠르게 보려면 하십시오.


7

문제 : EE 배송 템플릿이 패치되지 않았습니다

EE 1.13.1.0 설치 및 엔터프라이즈 배송 템플릿 (app/design/frontend/enterprise/default/template/checkout/onepage/shipping.phtml )에는 폼키가 추가되지 않았지만 청구 및 결제 템플릿은 추가되었습니다.

app/design/frontend/base/default/template/checkout/onepage/shipping.phtml 패치.


또한 (EE 1.14.2의 경우) form_key를에 추가해야했습니다 /app/design/frontend/enterprise/default/template... .../checkout/cart/coupon.phtml..../giftcardaccount/cart/block.phtml .../giftcardaccount/cart/check.phtml
Greg Nickoloff

4

SUPEE-9767으로 패치 된 Magento EE 버전에 문제가 있습니다 (따라서 1.14.3.3으로 업그레이드하지 않음). 해당 페이지의 양식 키가 캐시됩니다. 따라서 캐시를 비운 다음 제품 페이지로 이동하여 페이지가 완전히 캐시되었는지 확인 (두 번 새로 고침)하면 해당 제품을 장바구니에 추가 할 수 있어야합니다.

이제 다른 브라우저 (또는 시크릿 모드)를 열면 동일한 페이지를 열고 장바구니에 제품을 다시 추가해보십시오. 양식 키로 인해 제품이 장바구니에 추가되지 않습니다. 이제 캐시를 다시 비울 때 제품을 카트에 다시 추가 할 수 있습니다.

Jasper Zeinstra 덕분에


3

Magento Composer Intaller를 사용하는 개발자의 경우 배포 전략을 Symlink 대신 Copy로 변경할 수 있습니다. 모듈 파일을 .gitignore에 추가하도록 구성하여 리포지토리를 깨끗하게 유지할 수 있습니다.

https://github.com/Cotya/magento-composer-installer/blob/master/doc/Deploy.md#deploy-per-copy-instead-of-symlink

{ "extra":{ "magento-root-dir": "htdocs/", "magento-deploystrategy": "copy", "auto-append-gitignore": true } }


우리는 복사 "magento-force": true,가 중요하다는 것을 알았습니다
Jeroen


2

문제 : 패치가 바닐라 마 젠토 1.7.0.0에서 작동했습니다 [편집]

패치 스크립트를 테스트하는 동안 Magento 1.7.0.0 패치에서 문제가 발견되었습니다. 아무도 아직도 그것을 사용하는지 모르지만 SUPEE-9767의 문제입니다. 우리는 바닐라 설치를 사용했고 이전의 모든 패치를 먼저 설치했습니다.

사용 PATCH_SUPEE-9767_CE_1.7.0.2_v1-2017-05-25-09-31-32.sh 된 패치 파일 : 패치 파일 Magento 1.7.0.1 및 1.7.0.2에서 작동합니다.

문제 요약 :

ERROR: Patch can't be applied/reverted successfully.
...
can't find file to patch at input line 377
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
|index 7f7b9d0..cbbcbb1 100644
|--- app/code/core/Mage/Core/Model/File/Validator/Image.php
|+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
...
checking file app/code/core/Mage/Sales/Model/Quote/Item.php
Hunk #1 FAILED at 502.
1 out of 1 hunk FAILED
...

기록을 위해 1.7.0.0 에서이 패치를 시도했습니다.

$ grep SUPEE app/etc/applied.patches.list
2017-06-01 12:59:49 UTC | SUPEE-2677 | EE_1.13.0.2 | v2 | d20e6763cd0df70c4ac6e418c9775a1ff0f2618f | Tue Jan 14 17:49:25 2014 +0200 | v1.13.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-2629 | EE_1.12.0.0 | v1 | 5de775cf535e137b0b099d8066bd5b3a81f7ec4c | Wed Dec 11 16:50:40 2013 +0200 | v1.12.0.0..HEAD
-e 2017-06-01 12:59:49 UTC | SUPEE-1049 | EE-1.12.0.2 | v1 | 6d06f286f461562fa6d6573349f1491f7bf89859 | Wed Feb 13 17:46:13 2013 -0800 | v1.12.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-1868-1-12-0-2 | EE_1.12.0.2 | v1 | 2148b1b6be28a9bad0bec9a4aecc63ed318dd201 | Fri Jul 26 13:20:27 2013 -0700 | v1.12.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-4334-v1.11.1.0 | EE_1.11.1.0 | v1 | 40f5a2e4db9ca53dc6a8e62eb0c728fd63b1157e | Wed Sep 10 10:42:31 2014 -0700 | ef80f7bff749c941b4d1736cc2b502888e7540c9
2017-06-01 12:59:49 UTC | SUPEE-5345 | EE_1.12.0.2 | v1 | 2d36f61cf684ed26286b6d10307fcb99dd47ff02 | Thu Feb 5 19:39:01 2015 +0200 | v1.12.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-5994 | CE_1.6.0.0 | v1 | _ | n/a | SUPEE-5994_CE_1.6.0.0_v1.patch
2017-06-01 12:59:49 UTC | SUPEE-6237 | EE_1.14.2.0 | v1 | 8b216c42e2e5d2cb5d8e500fcb6690abede9df52 | Fri Jun 12 13:39:59 2015 +0300 | v1.14.2.0..HEAD
2017-06-01 12:59:49 UTC | SUPEE-6285 | CE_1.7.0.2 | v1 | 84749c91e14543e1f96af30e86efdf29f4562c98 | Tue Jun 23 09:48:07 2015 +0300 | c6e6cee8eb..84749c91e1
2017-06-01 12:59:49 UTC | SUPEE-6482 | CE_1.8.0.0 | v1 |  | Tue Jul 14 14:17:04 2015 +0300 |
2017-06-01 12:59:49 UTC | SUPEE-6788 | CE_1.7.0.1 | v1 | 04d237d56b116989e46839c41691585d927f99db | Fri Oct 23 13:52:50 2015 +0300 | f69136a
2017-06-01 12:59:49 UTC | SUPEE-7616 | CE_1.7.0.2-CE_1.4.2.0 | v1 | a16c51e3679c3f19de6c3207b7a42daa7f9227fc | Fri Dec 18 12:42:03 2015 +0200 | 3617437b6da11be812fcca85f4e6ecbd8b8dc94c..a16c51e3679c3f19de6c3207b7a42daa7f9227fc
2017-06-01 12:59:50 UTC | SUPEE-8788 | CE_1.7.0.0 | v2 | 6b5ef4fc5b09af74d0fd401440948d0a54dd203d | Fri Oct 14 19:27:22 2016 +0300 | 84fa3dd598466fa5c482965a3f8e5395af33bf9d
2017-06-01 12:59:50 UTC | SUPEE-8967 | EE_1.13.1.0 | v1 | 1fa53e9533f6f3a16f24d9b64dabef0ab7f965d7 | Thu Aug 18 16:32:48 2016 +0300 | 97d160644..1fa53e9533
2017-06-01 12:59:50 UTC | SUPEE-9652 | EE_1.14.3.1 | v1 | 4038f0785d828794083f53f10c01aaa6af403523 | Tue Jan 24 15:03:12 2017 +0200 | 9586981e6ca8b255014b242d50b68b88525b0754..4038f0785d828794083f53f10c01aaa6af403523

4
해당 파일이 없으면 보안 패치 SUPEE-7405를 적용하지 않았을 가능성이 큽니다.
Ryan Hoerr 2016 년

@RyanHoerr 당신이 맞습니다. 공식 파일 PATCH_SUPEE-7405_CE_1.7.0.2_v1-2016-01-20-04-58-44.sh이 1.7.0.0에서 작동하지 않기 때문에 SUPEE-7405가 생략되었습니다 . 고정 버전의 파일을 만들었습니다. 누구든지 필요하면 메시지를 보내주세요.
Jeroen Vermeulen-MageHost

2

이상한 행동으로 인해이 패치를 되돌려 야했습니다. 어떤 이유로 든 특정 사용자는 장바구니에 특정 항목을 추가 할 수 없습니다.

고객의 현재 견적과 충돌하는 오래된 견적과 관련이 있다고 가정합니다. 이 문제는 1D10T가 아닌지 확인하기 위해 사용자로 로그인하여 확인했습니다.

지난 금요일에 패치 수명을 다한 이후로 문제가되었습니다. 우리는 1.14.2.4를 사용하고 있습니다. 우리는 다른 사용자에게 잘 작동하도록 크게 수정되었습니다. 그냥 경고!


맞습니다. 패치는 Magento의 EE 버전에 대해 장바구니에 추가 조치를 중단시킵니다. 기본적으로이 문제는 form_key 생성 논리 버전이 하나 인 PageCache 모듈로 인해 발생하며 세션에는 자체 세션이 있습니다. FPC에 요청 된 페이지의 캐시 된 버전이 있지만 미니 카트를 재생성해야하는 경우 세션이 트리거되어 FPC 저장이 호출되는 동시에 자체 form_key를 생성하는 동시에 form_key가 재생성됩니다. 이 시점에서 form_key의 세션 값이 고객 쿠키 (FPC 프로세서에 사용됨)에 저장된 값과 다르므로 장바구니 컨트롤러에 추가 할 때 잘못된 키가 표시됩니다.
Stjepan

또한이 문제가 발생합니다. 수정 사항을 찾으면 알려 드리겠습니다.
cmtickle

이 문제를 해결했습니다. 여기에서 설명 : magento.stackexchange.com/questions/177942/…
cmtickle

이것이 SUPEE-9767 v2에서 해결되었는지 아는 사람이 있습니까?
의 1

2

문제 : 1.6.0.0의 무한 리디렉션 루프

빠른 수정

app / code / core / Mage / Core / Controller / Varien / Front.php 파일 의 메소드 보호 함수 _checkBaseUrl ($ request) 에서 아래 행을 찾으십시오.

 if (isset($uri['scheme']) && $uri['scheme'] != $request->getScheme()
        || isset($uri['host']) && $uri['host'] != $request->getHttpHost()
        || isset($uri['path']) && strpos($requestUri, $uri['path']) === false
 ) {  

이 줄을 다음으로 변경하십시오.

 if (isset($uri['host']) && $uri['host'] != $request->getHttpHost()
            || isset($uri['path']) && strpos($requestUri, $uri['path']) === false
 ) { 

파일을 저장 한 후 (REPO에 커밋) 캐시를 지우고 (var / cache 폴더 안의 모든 항목을 제거) 상점 첫 화면을 다시로드하십시오. SUPEE 9767 패치를 적용한 후에는 더 이상 302 리디렉션 문제없이 사이트가로드되어야합니다.

근본 원인

리디렉션 후 실제 요청과 URI 간의 SCHEME 값의 차이 예 : 실제 요청은 HTTP 체계를 반환하지만 URI의 체계는 HTTPS 일 수 있습니다.

가능한 근본적인 이유

  1. .htaccess 파일에 모든 http 요청을 https로 리디렉션하기위한 리디렉션 규칙이있을 수 있습니다. 사용자가 http://yourdomain.com을 요청 하면 계획을 변경하여 실제로 요청한 http://yourdomain.com 대신 https : // yourdomain으로 리디렉션했을 수 있습니다.

  2. 기본 보안 및 비보안 URL은 모두 https로 시작합니다


2

확인 된 버그 "체크 아웃시 고객 등록에 실패 했습니다 " 는 제 측면에서 약간 다릅니다.

고객이 결제시 등록을 선택하면 비밀번호가 올바르게 저장되지 않습니다. 비밀번호가 저장되지 않은 고객 만 올바르게 작성됩니다. 환영 이메일에 비밀번호가 표시되지 않았다는 사실을 발견했습니다. 이것 때문에 사람들은 로그인 할 수 없습니다.

SUPEE-9767 패치 / CE 1.9.3.3에 링크 된 버그 수정-한 페이지 체크 아웃-고객 등록 문제 가 저에게도 도움이되었습니다.


2

누구든지 supee-9767에서이게 무엇인지 말해 줄 수 있습니까?

여기에 이미지 설명을 입력하십시오


1
jQuery 1.10.2 버전은 취약한 것으로 간주되며 일부 PCI 스캐너에서 플래그가 지정됩니다. 1.12 버전이 아닙니다.
Ryan Hoerr 2016 년

@Detzler StackExchange은 (는) 포럼이 아닙니다. 질문을하려면 질문에 대한 답변이 아니라 질문을 게시해야합니다.
toon81

1
Ryan Hoerr는 패치로 인한 문제에 대해 물었습니다. 스크린 샷에서 볼 수 있듯이 그에게 가능한 변화를 말해주었습니다. 이 변경의 이유를 설명 할 수 없습니다. 그래서 나는 물었다. 문제가 무엇입니까?
Detzler

2

바닐라 마 젠토 1.7.0.2에서도 패치가 작동하지 않습니다.

martins@martinsmac.local:/var/www/magento1702-original$ ./PATCH_SUPEE-9767_CE_1.7.0.2_v1-2017-05-25-09-31-32.sh
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

patching file app/code/core/Mage/Admin/Model/Session.php
Hunk #1 succeeded at 109 (offset -29 lines).
patching file app/code/core/Mage/Adminhtml/Block/Checkout/Formkey.php
patching file app/code/core/Mage/Adminhtml/Block/Notification/Symlink.php
patching file app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Date.php
patching file app/code/core/Mage/Adminhtml/Model/Config/Data.php
patching file app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php
patching file app/code/core/Mage/Checkout/controllers/MultishippingController.php
patching file app/code/core/Mage/Checkout/controllers/OnepageController.php
Hunk #1 succeeded at 293 (offset -34 lines).
Hunk #2 succeeded at 313 (offset -34 lines).
Hunk #3 succeeded at 363 (offset -34 lines).
Hunk #4 succeeded at 392 (offset -34 lines).
Hunk #5 succeeded at 431 (offset -34 lines).
patching file app/code/core/Mage/Checkout/etc/system.xml
patching file app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php
patching file app/code/core/Mage/Core/Controller/Front/Action.php
patching file app/code/core/Mage/Core/Controller/Request/Http.php
Hunk #1 succeeded at 141 (offset -7 lines).
can't find file to patch at input line 377
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
|index 7f7b9d0..cbbcbb1 100644
|--- app/code/core/Mage/Core/Model/File/Validator/Image.php
|+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
patching file app/code/core/Mage/Core/etc/config.xml
patching file app/code/core/Mage/Core/etc/system.xml
patching file app/code/core/Mage/Customer/Model/Session.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Adapter/Zend/Cache.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Container/Abstract.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Parser/Csv.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Parser/Xml/Excel.php
patching file app/code/core/Mage/ImportExport/Model/Import/Uploader.php
patching file app/code/core/Mage/Sales/Model/Quote/Item.php
Hunk #1 FAILED at 502.
1 out of 1 hunk FAILED -- saving rejects to file app/code/core/Mage/Sales/Model/Quote/Item.php.rej
patching file app/code/core/Mage/Widget/Model/Widget/Instance.php
patching file app/code/core/Mage/XmlConnect/Helper/Image.php
patching file app/design/adminhtml/default/default/layout/main.xml
patching file app/design/adminhtml/default/default/template/notification/formkey.phtml
patching file app/design/adminhtml/default/default/template/notification/symlink.phtml
patching file app/design/adminhtml/default/default/template/page/head.phtml
patching file app/design/frontend/base/default/template/checkout/cart/shipping.phtml
patching file app/design/frontend/base/default/template/checkout/multishipping/billing.phtml
patching file app/design/frontend/base/default/template/checkout/multishipping/shipping.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/billing.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/payment.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/shipping.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/shipping_method.phtml
patching file app/design/frontend/base/default/template/persistent/checkout/onepage/billing.phtml
patching file app/etc/config.xml
patching file app/locale/en_US/Mage_Adminhtml.csv
patching file app/locale/en_US/Mage_Core.csv
patching file app/locale/en_US/Mage_Dataflow.csv
patching file downloader/Maged/Connect.php
patching file downloader/Maged/Controller.php
Hunk #1 succeeded at 400 (offset -5 lines).
Hunk #2 succeeded at 923 (offset -5 lines).
patching file downloader/Maged/Model/Session.php
Hunk #2 succeeded at 235 with fuzz 2 (offset -13 lines).
patching file js/varien/payment.js
patching file skin/frontend/base/default/js/opcheckout.js

이전 패치를 수동으로 적용한 후에도 가능합니다.

$ grep '|' app/etc/applied.patches.list
2017-06-19 04:01:42 UTC | SUPEE-2677 | EE_1.13.0.2 | v2 | d20e6763cd0df70c4ac6e418c9775a1ff0f2618f | Tue Jan 14 17:49:25 2014 +0200 | v1.13.0.2..HEAD
2017-06-19 04:03:26 UTC | SUPEE-2629 | EE_1.12.0.0 | v1 | 5de775cf535e137b0b099d8066bd5b3a81f7ec4c | Wed Dec 11 16:50:40 2013 +0200 | v1.12.0.0..HEAD
2017-06-19 04:04:12 UTC | SUPEE-1049 | EE_1.12.0.2 | v1 | 5cd884653325315804056d4c591572385b3c1d03 | Thu Mar 20 16:33:19 2014 +0200 | v1.12.0.2..HEAD
2017-06-19 04:05:01 UTC | SUPEE-1868-1-12-0-2 | EE_1.12.0.2 | v1 | 2148b1b6be28a9bad0bec9a4aecc63ed318dd201 | Fri Jul 26 13:20:27 2013 -0700 | v1.12.0.2..HEAD
2017-06-19 04:06:38 UTC | SUPEE-4334-v1.11.1.0 | EE_1.11.1.0 | v1 | 40f5a2e4db9ca53dc6a8e62eb0c728fd63b1157e | Wed Sep 10 10:42:31 2014 -0700 | ef80f7bff749c941b4d1736cc2b502888e7540c9
2017-06-19 04:07:10 UTC | SUPEE-1533 | EE_1.12 | v1 | _ | n/a | SUPEE-1533_EE_1.12_v1.patch
2017-06-19 04:08:41 UTC | SUPEE-5345 | EE_1.12.0.2 | v1 | 2d36f61cf684ed26286b6d10307fcb99dd47ff02 | Thu Feb 5 19:39:01 2015 +0200 | v1.12.0.2..HEAD
2017-06-19 04:09:29 UTC | SUPEE-5994 | CE_1.6.0.0 | v1 | _ | n/a | SUPEE-5994_CE_1.6.0.0_v1.patch
2017-06-19 04:10:00 UTC | SUPEE-6237 | EE_1.14.2.0 | v1 | 8b216c42e2e5d2cb5d8e500fcb6690abede9df52 | Fri Jun 12 13:39:59 2015 +0300 | v1.14.2.0..HEAD
2017-06-19 04:11:22 UTC | SUPEE-6285 | CE_1.7.0.2 | v1 | 84749c91e14543e1f96af30e86efdf29f4562c98 | Tue Jun 23 09:48:07 2015 +0300 | c6e6cee8eb..84749c91e1
2017-06-19 04:11:50 UTC | SUPEE-6482 | CE_1.8.0.0 | v1 |  | Tue Jul 14 14:17:04 2015 +0300 |
2017-06-19 04:12:12 UTC | SUPEE-7616 | CE_1.7.0.2-CE_1.4.2.0 | v1 | a16c51e3679c3f19de6c3207b7a42daa7f9227fc | Fri Dec 18 12:42:03 2015 +0200 | 3617437b6da11be812fcca85f4e6ecbd8b8dc94c..a16c51e3679c3f19de6c3207b7a42daa7f9227fc
2017-06-19 04:14:30 UTC | SUPEE-8167 | EE_1.12.0.2 | v1 | b1be28f9cd8c2ecba2aa403e59ad9e3d2855eb95 | Thu May 4 13:52:13 2017 +0300 | 8d12ea6fe564b6dc9ed1affb6de990f81aca3796..HEAD
2017-06-19 04:16:21 UTC | SUPEE-8967 | EE_1.13.1.0 | v1 | 1fa53e9533f6f3a16f24d9b64dabef0ab7f965d7 | Thu Aug 18 16:32:48 2016 +0300 | 97d160644..1fa53e9533
2017-06-19 04:16:44 UTC | SUPEE-9652 | EE_1.14.3.1 | v1 | 4038f0785d828794083f53f10c01aaa6af403523 | Tue Jan 24 15:03:12 2017 +0200 | 9586981e6ca8b255014b242d50b68b88525b0754..4038f0785d828794083f53f10c01aaa6af403523
2017-06-19 04:19:35 UTC | SUPEE-6788 | CE_1.7.0.2 | v1 | 0398c4b951d9a0f64495e7b8b3b8ca480952dd70 | Fri Oct 23 13:50:23 2015 +0300 | cfc252b

내가 찾은 해결책 / 문제 는 1.7.0.2 패치의 일부 변경 사항이 1.9.2.3 이전에는 존재하지 않는 파일에 대한 것입니다. 패치 스크립트 실행 하기 전에 새로운 1.9.2.3 설치에서 다음 파일을 복사했습니다 .

  • app / code / core / Mage / Core / Model / File / Validator / Image.php
  • app / code / core / Mage / Sales / Model / Quote / Item.php

패치는 다른 모든 보안 패치가 이미 적용된 것으로 가정합니다. 당신이 말하는 파일은 이전 패치에 의해 추가 / 변경되었습니다. 최소한 SUPEE-7405가 없습니다.
Ryan Hoerr 2016 년

라이언 안녕하세요, 사실 7405도 적용하려고했지만 작동하지 않았습니다 ... $ ./PATCH_SUPEE-7405_CE_1.7.0.2_v1.1-2016-02-23-07-22-52 \ (1) .sh 패치를 성공적으로 적용 / 복귀 할 수 있는지 확인 중 ... 오류 : 패치를 성공적으로 적용 / 복귀 할 수 없습니다. (..) Adminhtml / Helper / Sales.php Hunk # 1 FAILED at 121. 1 Hunk FAILED 중 1 개-파일 (..) Adminhtml / Helper / Sales.php.rej 패치 파일 (..) / Core / Model / Config.php Hunk # 1 FAILED 1642. 1 Hunk FAILED 중 1 개-파일 (..)에 대한 거부 저장 ​​Config.php.rej 패치 파일 (..) / Quote / Item.php Hunk # 1 509에서 실패 ....
Ricardo Martins

@RicardoMartins이 오류를 어떻게 해결할 수 있습니까? 패치 파일 app / locale / en_US / Mage_Adminhtml.csv 36 번 헝크 # 2 FAILED. ?
zus

0

https://magento.stackexchange.com/a/176930/46249에 추가 된 Jut

새 Magento 설치에서 symlinks는 기본적으로 항상 비활성화되어 있습니다. admin YES / NO 구성 값의 기본값은 'NO'입니다. 이 업데이트는 config.xml에서 심볼릭 링크를 명시 적으로 비활성화하고 추가 예방 조치로 구성 옵션이 포함 된 admin-> developer에서 템플릿 섹션을 제거합니다.

1.9.3.2 이전에 심볼릭 링크를 수동으로 활성화 한 경우 현재 심볼릭 링크 설정에 영향을 미치지 않습니다. 관리자에서 더 이상 설정을 볼 수는 없지만 활성화 된 상태로 유지됩니다.


굵은 글씨가 올바르지 않습니다. 1.9.3.4 (SUPEE-9767 V2) 이상으로 업데이트하면 최신 전류 설정이 삭제됩니다.

# app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.6-1.6.0.7.php
$connection->delete(
    $this->getTable('core_config_data'),
    $connection->prepareSqlCondition('path', array(
        'like' => 'dev/template/allow_symlink'
    ))
);

책임있는 관리자는 app / code / core / Mage / Core / etc / system.xml에서 템플릿 섹션에 대한 diff 변경 사항을 찾은 다음 섹션 600 주위에서 system.xml에 섹션을 추가하여 symlink 관리 섹션을 다시 활성화 할 수 있습니다. 또는 이중 확인 심볼릭 링크를 계속 사용할 수 있습니다

구성 옵션을 다시 표시해도 문제가 해결되지 않습니다. 옵션이 표시되지만 새로 도입 된 백엔드 모델이 값을 저장하지 못하므로 구성을 변경할 수 없습니다. 보다:

# app/code/core/Mage/Core/etc/system.xml
<backend_model>adminhtml/system_config_backend_symlink</backend_model>

# Mage_Adminhtml_Model_System_Config_Backend_Symlink
public function save()
{
    return $this;
}

따라서이 백엔드 모델을 제거하거나 재정의해야합니다. SUPEE-9767 V2 설치 후 심볼릭 링크를 활성화하는 방법을 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.