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


108

최신 Magento 1 보안 패치 SUPEE-8788에는 17 개의 APPSEC 업데이트 가 포함되어 있으므로 가능한 빨리 적용하는 것이 매우 중요합니다. 반면, 이전 버전과의 호환성 중단 가능성이 많이 있으며 지난해 패치의 역사를 감안할 때 부주의하게 적용하지는 않을 것입니다.

좋은 점은 이번에는 관련된 프론트 엔드 템플릿이 없기 때문에 모든 테마를 패치 할 필요가없는 것 같습니다. 이것은 마 젠토 1.8 이상에서만 적용됩니다.

그럼에도 불구하고 : 패치를 적용한 후에 호환성 문제 나 버그가 발생 했습니까?


6
"관련된 프론트 엔드 템플릿이 없습니다"-이전 Magento 버전에는 맞지 않습니다. 예를 들어 1.7.0.2 패치는 9 개의 프론트 엔드 /베이스 / 기본 템플릿 파일을 변경합니다.
Kristof at Fooman

magento.stackexchange.com/questions/140571/… 이것을 속이는가 ? 어쩌면 여기에 모든 정보가 포함되어 있습니다.
7ochem

2
패치의 .swf 업데이트에 문제가있는 사람은 패치에서 5951-9818 줄을 제거하고 .swf 파일을 수동으로 제거했습니다 /skin/adminhtml/default/default/media.
Liam McArthur

이유를 모르지만 1.8.0.0에 8788을 설치 한 후 패치 7405는 설치되지 않은 것으로보고합니다. v1 및 v1.1이 이전에 설치된 동안
MagenX

2
@srinivas이 경로에서 미디어 폴더를 제거 했습니까? skin / adminhtml / default / default?
Priya Ponnusamy

답변:


107

중요 사항

주의하시기 바랍니다 1.9.3은 1.9.2.4 + SUPEE-8788 다릅니다. 두 가지의 차이점은 다음과 같습니다. https://gist.github.com/digitalpianism/14a15cd52baede0e5d600e8c653f33e9

10 월 14 일 업데이트 : 패치 v2가 릴리스되었습니다 (아래 참조). 10.13 일 현재 1.5.x ~ 1.8.x 패치는 이전 패치와 호환되지 않아 Magento 웹 사이트에서 제거되었습니다 (아래 참조).

https://community.magento.com/t5/Security-Patches/SUPEE-8788-AND-SUPEE-1533-Incompatible-Hunk-error/td-p/50434/highlight/false/page/2

패치의 V3

이 새 버전은 Magento EE 1.13.0.x 전용입니다.

V3을 적용하십시오.

  • SUPEE 1533 되돌리기 (설치된 경우)
  • SUPEE 3941 설치 (설치되어 있지 않은 경우)
  • SUPEE 8788 v3 설치

패치의 V2

V2를 적용하십시오.

  • SUPEE 8788 v1 되돌리기
  • SUPEE 1533 되돌리기 (설치된 경우)
  • SUPEE 3941 설치 (설치되어 있지 않은 경우)
  • SUPEE 8788 v2 설치

DemacMedia는 위의 프로세스를 자동화하는 유용한 bash 스크립트를 개발했습니다. https://github.com/DemacMedia/magento-SUPEE8788-patcher

패치 세부 사항

패치를 파고 들면 흥미로운 부분이 있습니다 (1.9.2.4 패치).

  • Mage_Adminhtml_Block_Media_Uploader로 교체 Mage_Uploader_Block_Multiple되었으므로 Mage_UploaderFlash 지원을 중단 하는 전체 모듈이 있습니다. 이전 블록은 더 이상 사용되지 않으며 새 블록을 확장합니다.
  • 아직도 업 로더에 대해 모듈은 새로운 비 플래시 업 로더를 처리하기 위해 리팩토링되었습니다. 그것은 사용 하는 대신 템플릿을 사용하는 업로드 블록으로.Mage_DownloadableMage_Uploader_Block_Single
  • 이러한 변화에 따라, t 그는 파일을 SWF skin/adminhtml/default/default/media/flex.swf, skin/adminhtml/default/default/media/uploader.swfskin/adminhtml/default/default/media/uploaderSingle.swf삭제되었습니다.
  • 주소 삭제 컨트롤러는 이제getDeleteUrl from을 통해 직접 양식 키로 보호 됩니다.Mage_Customer_Block_Address_Book
  • 위시리스트 아이템 제거 컨트롤러는 이제getRemoveUrl from 를 통해 폼 키로 보호됩니다Mage_Wishlist_Helper_Data
  • Paypal Express 결제 방법은 새로운 사용자를 체크 아웃하고 등록 할 때 사용 된 고객 이메일이 Magento에 존재하도록합니다. (이해하기 : 새로운 견적이 처리되기 전에 새로운 사용자가 생성됨)
  • cURL / HTTP 클라이언트를 사용한 지불 방법은 이제 CURLOPT_SSL_VERIFYHOST2로 설정되었으며 (이전 0) CURLOPT_SSL_VERIFYPEER플래그가 cURL 호출에 추가되었습니다. SSL 확인 사용 드롭 다운을 통해 결제 방법 구성을 통해 피어 확인 플래그를 활성화 / 비활성화 할 수 있습니다.
  • Mage_Http_Client_Curl이제 CURLOPT_SSL_VERIFYPEERtrue로 설정 되었으므로 (이전에 false 임) 이를 사용하는 사용자 정의 모듈이있는 경우주의하십시오.
  • 이제 제품 그림의 최대 치수를 구성에서 구성 할 수 있습니다. 주의 : 너무 큰 이미지를 업로드하면 재미있는 오류 메시지가 나타날 수 있습니다. 패치 업로드 후 Magento 1.9.2.2에서 파일 형식이 허용되지 않습니다

알려진 SUPEE-8788 v2 문제

알려진 SUPEE-8788 v1 문제

알려진 1.9.3.0 문제

편집 : 목록이 길어 지고이 답변에서 주제와 거의 관련이 없으므로 (SUPEE-8788과 관련이 없음) 알려진 1.9.3.0 문제 목록은 https : //magento.stackexchange입니다. com / a / 140826 / 2380


1
광범위한 목록에 감사드립니다! 한 가지 질문 : 전체 텍스트 검색 문제가 SUPEE-8788 패치에 적용됩니까? 이 기능과 관련된 변경 사항을 찾을 수 없습니다.
Aad Mathijssen

1
@MageDev는 질문의 세 번째 의견을 참조하십시오;)
Raphael at Digital Pianism

1
패치를 성공적으로 적용한 후 제품 업 로더가 작동하지 않고 인기있는 CreareSEO 플러그인을 사용하는 경우이 수정 프로그램도 github.com/adampmoss/CreareSEO/pull/78
joesk

1
"Paypal Express 결제 방법으로 사용 된 고객 이메일이 Magento에 존재하는지 확인했습니다." 이는 고객이 PayPal Express로 체크인 할 수 없음을 의미합니까? 등록 된 사용자 여야합니까? 뭔가 빠졌습니까?
Icon

1
이전 업 로더를 사용한 일부 타사 확장 프로그램은 패치를 적용한 직후에 깨졌습니다. 예를 들어 "Magic 360"은 백엔드 제품 세부 정보 탭에 탭을 추가합니다. 패치 후에는 제품 세부 정보를 보거나 편집 할 수 없습니다. Magento connect ( magentocommerce.com/magento-connect/… ) 의 확장 개발자에게이 문제가 나타났습니다 .
DarkCowboy

29

패치를 적용 할 때이 오류가 발생할 수 있습니다.

checking file skin/adminhtml/default/default/media/flex.swf
checking file skin/adminhtml/default/default/media/uploader.swf
checking file skin/adminhtml/default/default/media/uploaderSingle.swf
Reversed (or previously applied) patch detected!  Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored
checking file skin/adminhtml/default/default/xmlconnect/boxes.css

8788 패치에는 이진 컨텐츠가 포함되어 있습니다. Magento는 직접 다운로드 링크를 제공하지 않으므로 (이 이후로이 정책이 싫습니다) 패치를 컴퓨터에 다운로드하고 파일 전송 응용 프로그램 (예 : Windows의 WinSCP)을 사용하여 서버에 업로드해야합니다. 예를 들어 WinSCP는 TEXT 모드로 업로드합니다 (WinSCP는 기본적으로 * .sh 파일을 텍스트로 처리합니다).

따라서 이에 대한 해결 방법은 패치 파일을 압축 / 타르 고 서버에서 다시 압축 해제 / 다시 설정하는 것입니다. et voila.


미안하지만 대답 할 방법이 없었어

  1. 올바른 마 젠토 버전 다운로드 (예 : CE 1.9.1.0)
  2. 다음 파일을 다운로드 한 위치로 교체하십시오

skin / adminhtml / default / default / media / flex.swf skin / adminhtml / default / default / media / uploader.swf skin / adminhtml / default / default / media / uploaderSingle.swf

  1. 패치를 실행

나를 위해 일했다



10
OP 질문을 읽었습니까? fschmengler는 다음과 같이 물었습니다. "그렇습니다. 패치를 적용한 후에 호환성 문제 나 버그가 발생 했습니까?" 패치를 적용하는 동안이 문제가 발생했습니다. 이 스레드의 의미는 SUPEE-8788의 가능한 오류를 문서화하는 것입니다. 여기에는 패치 자체의 IMHO 문제도 포함됩니다.
infabo

감사합니다! 향후 모든 Magento 패치에도이 작업을 수행하는 것이 가장 좋습니까?
KiwisTasteGood

아니면 그냥 dos2unix PATCH_SUPEE-8788_CE_1.9.2.4_v1-2016-10-11-07-03-46.sh
fbtb

일반적으로 이전에는 필요하지 않았으며 앞으로는 필요하지 않을 것이라고 가정합니다. 업 로더 SWF는 Magento 1.x와 함께 제공되는 유일한 바이너리 일 것 같습니다. 이제 사라졌습니다. 따라서 앞으로도 이와 같은 문제는 다시는 기대하지 않습니다.
infabo

3
FileZilla를 사용하여 .sh패치 파일을 Magento 루트에 binary업로드하는 경우 패치 파일을 업로드 하기 전에 전송 유형을로 설정 하십시오. 참조
ForMat

25

이전에 SUPEE-1533을 적용한 경우 패치가 실패합니다 app/code/core/Mage/Adminhtml/controllers/DashboardController.php.

나는 이것을 해결했다 ...

  1. SUPEE-1533에 의해 해당 파일에 도입 된 변경 사항을 수동으로 되 돌리십시오
  2. SUPEE-8788 적용
  3. SUPEE-1533이 해당 파일에 도입 한 변경 사항을 수동으로 다시 소개

패치 파일에 바이너리 데이터가 포함되어 편집기에 저장하면 SUPEE-8788에서 변경 사항을 제거하면 문제가 발생할 수 있습니다 (또 다른 문제).


이해했듯이 원래 1533 패치를 되돌리고 SUPEE 8788을 설치 한 다음 다시 1533을 설치 했습니까 ?? 올바르게 이해합니까?
Icon

또한 28 app / design / frontend / base / default / template / review / form.phtml에서 FAILED HUNK에 문제가 있습니다.
Icon

9
공식적인 증분 패치를 제대로 적용하는 데 시간이 걸리면 이전에 제공된 패치를 적용했을 때 패치가 작동하지 않을 때 수동으로 수정해야하는 이유가 궁금합니다. 매우 이상한 접근법.
Jon Holland

1
SUPEE 1533이 설치된 1.9 미만의 버전이있는 대부분의 경우 패치를 제대로 설치할 수 없습니다. SUPEE 8788은 1533과 호환되지 않습니다
Icon

2
@JonHolland 왜냐하면 그것은 마젠 토이기 때문입니다.
Agop

25

여기에 내가 (그리고 다른 사람들이) 지금까지 만난 것에 대한 요약이 있습니다. 나는 그것을 분류하고, 누락 된 것을 자유롭게 추가하거나 연결하려고 노력하고 있습니다. 게시물은 커뮤니티 위키입니다.

패치 실패 이유

"오류 : 패치를 성공적으로 적용 / 복원 할 수 없습니다"가 표시되면 로그 메시지에서 "Hunk # 1 FAILED"를 찾아 패치가 실패한 파일을 확인하십시오.

  • 분명히 Magento 1.7 용 패치 v2는 SUPEE-3941 이 Magento 1.8 및 1.9에만 존재하지만 존재할 것으로 예상 합니다 . Magento 1.7을 사용하고에서의 파일과 관련된 오류 downloader를 발견하면 1.8 용 SUPEE-3941을 다운로드하여 1.7에 적용하면 작동합니다. 주석 스레드 참조 : 보안 패치 SUPEE 8788 문제
  • 이전에 SUPEE-1533을 적용한 Magento 버전 app/code/core/Mage/Adminhtml/controllers/DashboardController.php에서는 파일이 패치 모두에 의해 영향을 받고 SUPEE-8788 (잘못된!)이 패치되지 않은 버전이 있다고 가정하기 때문에 패치가 실패합니다 . 패치 버전 2에서도 마찬가지입니다! 버전 2에는 SUPEE-1533의 변경 사항이 포함되어 있으므로 이전에 설치 한 경우 여전히 되돌려 야하지만 나중에 수동으로 다시 적용 할 필요는 없습니다.

  • "downloader"디렉토리를 삭제하거나 이름을 바꾸면 다운로더 내의 파일을 패치하기 때문에 패치가 실패합니다. 가장 쉬운 해결 방법은 원래 다운로더 디렉토리를 복원하고 패치를 적용한 다음 디렉토리를 다시 삭제하는 것입니다. 또는 downloader/lib/Mage/HTTP/Client/Curl.php패치에서 지침을 제거 할 수도 있습니다 .

  • 다른 "Hunk FAILED"메시지는 일반적으로 코어 파일의 변경 또는 이전 패치 누락으로 인해 발생합니다. Magento 버전의 모든 이전 패치가 설치되어 있고 코어 파일을 변경하지 않았는지 확인하십시오.

  • 또 다른 일반적인 문제는 패치가 .swf이진 컨텐츠로 인해 파일 을 삭제하지 못한다는 것입니다 . 오류는 다음과 같습니다.

    checking file skin/adminhtml/default/default/media/uploaderSingle.swf
    Reversed (or previously applied) patch detected!  Assume -R? [n]
    Apply anyway? [n]
    Skipping patch.
    1 out of 1 hunk ignored
    

    또는 이런

    Patching file skin/adminhtml/default/default/media/uploader.swf using Plan A...
    No such line 2 in input file, ignoring
    Empty context always matches.
    Hunk #1 failed at 0.
    1 out of 1 hunks failed while patching skin/adminhtml/default/default/media/uploader.swf
    Hmm...  The next patch looks like a unified diff to me...
    The text leading up to this was:
    --------------------------
    

    또는 이와 같이 :

    Checking if patch can be applied/reverted successfully...
    /bin/patch: **** malformed patch at line 5790: ?rM]M??????&X㔮??v??Q;r?N?qJ??Y???I0?Y??4??'?????9?.??X?Ǒ?{??ax!G???I???q?u|????թ??????|
                                                   h??o?V@??|? ?g?H aꪭ??Ю???,I"?ğ????.??    yI?I\????)?X?
                         ?p???*?e?q?K8<DqD?H;|?
    ERROR: Patch can't be applied/reverted successfully.
    

    가능한 솔루션에서 주어진 이 대답 @infabo에 의해. https://gist.github.com/piotrekkaminski/9bc45ec84028611d621e에 설명 된대로 curl을 사용하여 패치를 적용하려는 시스템에 직접 패치를 다운로드하면 Cygwin에서 시도했을 때를 제외하고 항상 나를 위해 일했습니다.

실패한 패치를 처리하는 고급 방법 : @PeterOCallaghan은 드라 이런 라인을 주석 처리하고 * .rej 파일을 수동으로 처리 할 것을 제안 했습니다 . 이렇게하면 패치를 부분적으로 적용 할 수 있으며 swf 파일을 삭제하지 못하면 수동으로 수행 할 수 있습니다. 또는 downloader해당 디렉토리를 삭제하여 파일을 업데이트하지 못하면 무시해도됩니다.

  1. vi PATCH_SUPEE-8788_CE_1.8.1.0_v1-2016-10-11-06-54-44.sh(또는 유사한 파일 이름) _apply_revert_patch dry-run다음과 같이 변경#_apply_revert_patch dry-run

  2. 발행하여 패치를 실행 ./PATCH_SUPEE-8788_CE_1.8.1.0_v1-2016-10-11-06-54-44.sh

파일이 패치됩니다

  1. 코멘트 _apply_revert_patch#_apply_revert_patch

  2. 패치를 다시 실행하여 app/etc/app/etc/applied.patches.list항목 을 추가하십시오.

  3. 모든 .rej 파일에 대한 grep

    git status | grep *.rej

  4. 그 변화에 수동으로 작업

패치 적용 후 문제

양식 키

  • 1.8 이전의 Magento 버전의 경우 frontend/base/default템플릿 이 변경되었습니다 . 테마가 이러한 파일을 대체하는 경우 동일한 변경 사항을 수동으로 적용해야합니다.

    보다 구체적으로, 다음과 같은 프론트 엔드 조치를 위해 양식 키가 추가되었습니다.

    • 위시리스트에서 항목 제거
    • 상점보기에서 고객 주소 삭제
    • 장바구니에서 견적 항목 업데이트

    이러한 작업에 문제가 발생하면 @LukeRogers의 답변 을 참조하십시오 .

맞춤 업 로더

Unirgy_Rapidflow 및 사용자 정의 업로드 양식이있는 기타 확장 프로그램이 더 이상 작동하지 않습니다.

참조 이 답변을 @mpchadwick에 의해 @lloiacono에 의해 코멘트

나는 대체하여 그것을 고정 $this->getUploader()->getConfig()$this->getUploader()->getUploaderConfig()Unirgy_RapidFlow_Block_Adminhtml_Profile_Edit_Tab_Upload

확장에서이를 사용하는지 확인하려면 명령 행에서 다음을 실행할 수 있습니다.

grep -R 'getUploader()->getConfig();' app/code/community

보고 된 오류 메시지

  • PHP 치명적 오류 : 정의되지 않은 함수 hash_equals () 호출

    5.6 이전의 PHP 버전 을 사용하고있는 경우 무시 code/core/Mage/core/functions.php됩니다 code/local/Mage/core/functions.php(Fishpig 확장 프로그램을 사용하는 경우에 해당). @ClaudiuCreanga의 답변 보기


패치 v2에서 해결 된 문제

이러한 문제가 발생하면 패치 버전 1 (파일 이름의 "v1")을 사용하는 것입니다. 이 문제를 해결하는 "v2"를 얻으려면 패치를 다시 다운로드하십시오.

  • SUPEE-3941과의 호환성 문제가 있었고 downloader/lib/Mage/HTTP/Client/Curl.php

  • /lib/Unserialize/Reader/ArrValue.php에 'Unsupported data type N'메시지가있는 'Exception'

  • EE 1.14.2.0 패치에는 실수로 삭제해야 할 test_oauth.php 파일이 포함되어 있습니다 ! @MatthiasZeis의 답변 보기


장바구니에서 견적 항목을 업데이트 할 때 추가 된 양식 키는 SUPEE-8788로 추가 된 것이 아닙니다 (최소 1.9.2.4 이상)
Raphael at Digital Pianism

최소한 1.13.0.1 패치의 @RaphaelatDigitalPianism Mage_Checkout_CartController::updatePostAction은 잠재적으로 다른 패치 버전에도 폼 키 유효성 검사를 추가합니다 .
Luke Rodgers

23

당신이 얻는다면

Call to undefined function hash_equals() error

패치가 성공 했더라도에서에 functions.php를 복사했음을 의미 할 수 있습니다 app/code/local/Mage/Core.

해당 파일이 핵심 기능을 덮어 쓰기 때문에 해당 기능도 삽입해야합니다.

따라서 app/code/local/Mage/Core/functions.php끝에 삽입 하십시오 :

if (!function_exists('hash_equals')) {
    /**
     * Compares two strings using the same time whether they're equal or not.
     * A difference in length will leak
     *
     * @param string $known_string
     * @param string $user_string
     * @return boolean Returns true when the two strings are equal, false otherwise.
     */
    function hash_equals($known_string, $user_string)
    {
        $result = 0;

        if (!is_string($known_string)) {
            trigger_error("hash_equals(): Expected known_string to be a string", E_USER_WARNING);
            return false;
        }

        if (!is_string($user_string)) {
            trigger_error("hash_equals(): Expected user_string to be a string", E_USER_WARNING);
            return false;
        }

        if (strlen($known_string) != strlen($user_string)) {
            return false;
        }

        for ($i = 0; $i < strlen($known_string); $i++) {
            $result |= (ord($known_string[$i]) ^ ord($user_string[$i]));
        }

        return 0 === $result;
    }
}

1
나는 Fishpig가 이것을 요구한다는 것을 알고 있습니다. 따라서 설치했다면 이것이 문제가 될 것입니다.
mpchadwick

1
내가 혼란스러워했다 그것을 당신이 functions.php하지 Fishpig 무시하라는 메시지 MWI입니다 : 참고 mwi-plugin.com/documentation/installation
mpchadwick

18

에서 PATCH_SUPEE-8788_EE_1.14.2.0_v1-2016-10-10-02-27-03.sh, 파일은 test_oauth.php젠토 루트 디렉토리에 생성됩니다. URL https : //thedomain.tld/test_oauth.php를 호출하는 사람에게 완전한 예외 스택 추적을 노출시킬 수 있으므로이 항목 을 삭제하거나 최소한 프로덕션에 배포하지 않아야 합니다.


좋은 캐치, Matthias! 17 개의 APPSEC 패치를 배포하고 동시에 다른 벡터를 여는 것은 다소 나쁜 형태입니다. 아직 마 젠토에게보고 했습니까?
Bryan 'BJ'Hoffpauir Jr.

나는이 시점에서 다른 사람들이 확신하기 때문에 Magento Support와 함께 이것에 관한 티켓을 열었습니다. v2 버전의 패치에 대해 들어 보지 못했지만 문제를 알고 있어야합니다.
quasiobject

1
v2가 있으며 곧 게시해야합니다. 예, 여기에 게시했을 때보고했습니다.
Matthias Zeis

1
이제 수정되었습니다
Erfan

18

1.7 마 젠토 버전에 대한이 응용 프로그램


1.7.0.2 버전 2를 실행중인 경우 SUPEE 8788의 버전 2가 372 행에서 실패 하여 Curl.php다음에 변경 사항을 적용하려고합니다 .

patching file downloader/lib/Mage/HTTP/Client/Curl.php
Hunk #1 FAILED at 372.
1 out of 1 hunk FAILED -- saving rejects to file downloader/lib/Mage/HTTP/Client

지침은 우리가해야한다고 말한다 SUPEE-1533을 되돌아SUPEE-3941를 설치

문제 : SUPEE-3941은 Magento CE 1.8-1.9에서만 사용할 수 있습니다. 1.7을 적용 해 볼 수 있으며 적용됩니다. 나는 생각한다패치 개발자 Magento는 1.8 이하의 magento를 실행하는 사용자를 위해 SUPEE-8788 버전 3을 릴리스하거나 1.8 이하 버전 용으로 설계된 추가 SUPEE-3941 패치를 작성해야합니다.

SUPEE-8788의 Btw 버전 1 에 1.7.0.2 에서 오류가 발생 하지 않았습니다Curl.php (많은 설치에서 테스트했습니다)

팁 : 끝에 .swf 오류가 발생하면 패치를 압축하고 서버에 업로드 한 후 압축을 푸십시오 .SWF 오류가 사라집니다.

최신 정보:

Magento는 기본적으로 SUPEE-8788 적용 오류를 피하기 위해 Magento 1.7.0.2 버전에 SUPEE-3941 패치를 설치해도된다고 말했습니다.


우리는 포기했다
datasn.io

@ kavoir.com 1.7.0.2에 설치할 때 동일한 CURL.PHP 오류가 발생합니까 ??
Icon

1
SUPEE-3941을 사용할 수없는 최신 1.9.2.1 버전 사이트에서 동일한 curl.php 오류가 발생하지만 흥미로운 문제는 1.7.0.2에 8788 V2를 설치하는 것입니다. 1533을 되 돌리는 것도 그 문제를 해결하지 못한다
Jon Holland

@JonHolland 나는 magento 팀에 썼다 ... 나는 그들이 응답하기를 바란다
Icon

2
magento 커뮤니티 리더로부터 답장을 받았습니다. 기본적으로 1.7.0.2 버전에서 3941 패치를 설치하는 것이 좋습니다.
Icon

15

Original DashboardController.php (1.7.0.2-파칭되지 않음, magento에서 새로워 짐)

  if ($params = unserialize(base64_decode(urldecode($gaData)))) {

1533 패치 된 DashboardController.php는 다음과 같이 변경되었습니다.

 if ($newHash == $gaHash) {
            $params = json_decode(base64_decode(urldecode($gaData)), true);
            if ($params) {

8788 패치는 DashboardController.php에서 다음과 같이 변경되었습니다.

 if (hash_equals($newHash, $gaHash)) {
            if ($params = unserialize(base64_decode(urldecode($gaData)))) {

8788에 1533과 비교하여 수정 된 변경 사항이있는 것처럼 8788을 설치 한 후 8788 변경을 1533으로 수동으로 대체하여 mpchadwick에서 제안한대로 파일을 수정하는 것이 이상적인지 확실하지 않습니다. 기본적으로 8788 변경을 제거하십시오.

어떤 제안?


2
IMO 원하는 최종 결과는이 둘의 혼합입니다. json_decode 여야하지만 ==보다는 hash_equals를 사용해야합니다. 이렇게하면 타이밍 공격이 방지됩니다 (악용하기가 매우 어려울 수 있음).
Peter O'Callaghan

@Peter에 동의하십시오. Git을 사용하는 경우 SUPEE-1533에 대한 커밋을 되돌리고 새 패치를 적용한 후 커밋 한 다음 다시 되 돌린 커밋을 다시 되돌립니다. 그러면 충돌이 DashboardController.php자동으로 해결되어야합니다.
Fabian Schmengler

1
8788을 설치 한 후 교체해야하는 DashboardController.php 코드를 제공해 주시겠습니까? 위에서 언급했듯이 1533과 8788 패치 라인이 다르게 보이는 것을 편집 해야할지 확실하지 않습니다. 수동으로 수정 한 버전의 모양을 알려주시겠습니까?
Icon

1533 업데이트로 수동 수정 후 8788 코드가 어떻게 표시됩니까? if (hash_equals ($ newHash, $ gaHash)) {if ($ params = json_decode (base64_decode (urldecode ($ gaData)))) {
아이콘

1
커밋 되돌리기에 대한 두 번의 참고 사항 : 추가 커밋을 만들지 않고도 SUPEE-1533 을 사용 git revert -n 123456ab하고 git cherry-pick -n 123456ab일시적으로 실행 취소 할 수 있습니다 .
Matthias Zeis

14

절반은이 게시물을 주로 의견 기반으로 또는 명확한 답변없이 표시하도록 유혹했습니다.)

폼 키는 몇 개의 컨트롤러에 추가되었으며 숫자는 마 젠토 버전에 따라 다릅니다.

문제가 생기면

  • 위시리스트에서 항목 제거
  • 상점보기에서 고객 주소 삭제
  • 장바구니에서 견적 항목 업데이트

테마 .phtml파일을 확인 POST하고 폼 키 매개 변수를 확인하여 컨트롤러 작업에서 확인을 통과시킵니다.

class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action

     public function updatePostAction()
     {
+        if (!$this->_validateFormKey()) {
+            $this->_redirect('*/*/');
+            return;
+        }
+

이러한 문제로 인해 이전 패치에서는 많은 사람들이 넘어 갔으며, 패치를 적용 할 때 재정의 된 템플릿이 포함 된 사용자 지정 프런트 엔드 테마를 쉽게 찾을 수 없었습니다.

양식 키는 종종에 추가됩니다 .phtml추가로 형태를 포함하는 템플릿 input과 같은

<input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />

이것이 영향을 미치는 양식의 전체 목록이 있습니까? 그래서 테스트하고 모두 고칠 수 있습니다. 고객을 성가 시게하거나 전환율을 낮추기 위해 이와 같은 멍청한 기능 장애를 원하지 않습니다.
datasn.io

SUPEE 8788이 1.7에 완벽하게 설치되고 (app / design / frontend / base / default / template .....)에서 변경되는 경우. 그러나 웹 사이트 프론트 엔드 위시리스트 변경에도 불구하고 제거 버튼을 추가하면 모든 것이 완벽하게 작동합니다. 테마 파일을 수동으로 패치해야합니까? 또는 긴 패치가 프론트 엔드에서 아무 것도 깨지 않는 것처럼 그대로 둘 수 있습니까?
Icon

11

1.9.2.4의 swf에서 동일한 문제를 만났습니다.

폭스 고정-아래 단계를 따르십시오.

1 단계.이 링크로 보안 패치 8788 SSH 파일을 다운로드하십시오 .- https://magento.com/tech-resources/downloads/magento/

Step 2. 다운로드 후 보안 패치 8788 SSH 파일 하나의 폴더에 넣고 동일한 폴더의 Zip 파일을 만드십시오.

단계 3. Zip 폴더를 루트 magento 폴더에 업로드하고 SSH Putty를 통해 압축 해제하십시오.

단계 4. 패치를 실행하십시오 :-$ bash PATCH_SUPEE-8788_CE_1.9.2.4_v1-2016-10-11-07-03-46.sh

* 참고 : 패치 파일에는 전체 바이너리 파일이 텍스트 형식으로 포함되어 있으므로 zip 파일없이 보안 패치 8788 SSH 파일을 업로드하면 동일한 파일이 손상됩니다. *


10

SUPEE-8788을 appyling 한 후 Unirgy_RapidFlow 2.0.0.18을 사용하여 "가져 오기"프로파일을 더 이상로드 할 수 없어 500 오류가 발생했습니다 (Apache 또는 HTTPD 로그에는 없음).

여전히 디버깅하고 Unirgy와 함께 해결하는 과정에 있지만 업 로더 블록이 문제를 일으키는 것으로 보입니다 ( Unirgy_RapidFlow_Block_Adminhtml_Profile_Edit_Tab_Upload).

패치 Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content는 부모 에게 몇 가지 변경 사항을 도입했습니다 .

uRapidFlow 외에도 파일 업로드를 허용하는 다른 타사 모듈이 SUPEE-8788의 결과로 중단 될 수 있습니다.


이것에 대한 해결책을 이미 찾았습니까? 나는 $ this-를 교체하여 고정> getUploader () -> $ this-와 getConfig ()> getUploader () -> Unirgy_RapidFlow_Block_Adminhtml_Profile_Edit_Tab_Upload에서 getUploaderConfig ()
lloiacono

지금은 좋아. Unirgy도 2.0.0.23에서 수정 한 것으로 보입니다. secure.unirgy.com/release-notes.php?m=1#RapidFlow 추가 업그레이드를 구매하기 위해 클라이언트와 협력하고 있으며 확인할 수 없습니다.
mpchadwick

docroot에서 이것을 실행하여 수정해야 할 다른 파일을 찾으십시오. grep -r 'getUploader ()-> getConfig ()'./
lloiacono

8

패치 스크립트를 실행할 때 다음 메시지가 나타납니다.

can't find file to patch at input line 4753
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/lib/Mage/HTTP/Client/Curl.php downloader/lib/Mage/HTTP/Client/Curl.php
|index 6d0607e..5757be3 100644
|--- downloader/lib/Mage/HTTP/Client/Curl.php
|+++ downloader/lib/Mage/HTTP/Client/Curl.php

https://www.magereport.com의 권장 사항에 따라 "downloader"폴더의 이름을 변경했기 때문이라고 생각합니다 .

폴더의 이름을 "downloader"로 임시 변경하고 패치를 올바르게 적용한 다음 비밀 이름으로 이름을 변경했습니다.


8

SUPEE-3941로 인해 1.9.0.0의 패치도 실패합니다 (아마도 1.9.0.1에서 1.8.0.0까지). 3941 패치 다운로더 /lib/Mage/HTTP/Client/Curl.php를 패치하면 8788이 실패합니다.

checking file downloader/lib/Mage/HTTP/Client/Curl.php
Hunk #1 FAILED at 378.
1 out of 1 hunk FAILED
checking file js/lib/uploader/flow.min.js

아래 1.9.0.1에 대한 해결 방법. 변경 사항이 너무 철저하여 8788 패치 자체를 조정해야 할 수도 있습니다.

편집 : 패치를 편집하고 Curl.php를 검색하고 바꿉니다.

diff --git downloader/lib/Mage/HTTP/Client/Curl.php downloader/lib/Mage/HTTP/Client/Curl.php
index c55f88d..31f9f77 100644
--- downloader/lib/Mage/HTTP/Client/Curl.php
+++ downloader/lib/Mage/HTTP/Client/Curl.php
@@ -378,8 +378,8 @@ implements Mage_HTTP_IClient
         }

         $this->curlOption(CURLOPT_URL, $uri);
-        $this->curlOption(CURLOPT_SSL_VERIFYPEER, FALSE);
-        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 2);
+        $this->curlOption(CURLOPT_SSL_VERIFYPEER, true);
+        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 'TLSv1');

         // force method to POST if secured
         if ($isAuthorizationRequired) {
diff --git js/lib/uploader/flow.min.js js/lib/uploader/flow.min.js 

diff --git downloader/lib/Mage/HTTP/Client/Curl.php downloader/lib/Mage/HTTP/Client/Curl.php
index c55f88d..31f9f77 100644
--- downloader/lib/Mage/HTTP/Client/Curl.php
+++ downloader/lib/Mage/HTTP/Client/Curl.php
@@ -378,8 +378,8 @@ implements Mage_HTTP_IClient
         $uriModified = $this->getSecureRequest($uri, $isAuthorizationRequired);
         $this->_ch = curl_init();
         $this->curlOption(CURLOPT_URL, $uriModified);
-        $this->curlOption(CURLOPT_SSL_VERIFYPEER, false);
-        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 2);
+        $this->curlOption(CURLOPT_SSL_VERIFYPEER, true);
+        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 'TLSv1');
         $this->getCurlMethodSettings($method, $params, $isAuthorizationRequired);

         if(count($this->_headers)) {
diff --git js/lib/uploader/flow.min.js js/lib/uploader/flow.min.js

모든 이전 패치를 설치 한 후 모든 Magento 버전에서 작동하도록 패치 파일을 사용자 정의했습니다. magentohosting.pro/files/MageHost.pro_fixed_SUPEE-8788_v2.zip
Jeroen Vermeulen-MageHost

8

내가 얻는 것입니다

Hunk #1 FAILED at 373.
1 out of 1 hunk FAILED -- saving rejects to file downloader/lib/Mage/HTTP/Client/Curl.php.rej
patching file js/lib/uploader/flow.min.js
patching file js/lib/uploader/fusty-flow-factory.js
patching file js/lib/uploader/fusty-flow.js
patching file js/mage/adminhtml/product.js
patching file js/mage/adminhtml/uploader/instance.js
patching file skin/adminhtml/default/default/boxes.css
patching file skin/adminhtml/default/default/media/flex.swf
patching file skin/adminhtml/default/default/media/uploader.swf
patching file skin/adminhtml/default/default/media/uploaderSingle.swf
patching file skin/adminhtml/default/default/xmlconnect/boxes.css

설치와 동일한 오류가 발생합니다. 당신이 무언가를 알아 낸 경우 알고 싶습니다.
TunaMaxx

아뇨, 아직 다른 사람이 이것을 알아 내기를 기다리고 있습니다
Haim

2
magento.stackexchange.com/a/73957/9276을 참조하십시오 . Curl.php 파일에이 수정 사항이 있으면 해당 변경 사항을 취소하고 (CURLOPT_SSL_CIPHER_LIST / 'TLSv1'행을 되돌림) 패치를 적용하고 변경 사항을 다시 실행하십시오.
Joe

감사합니다 @ 조. 같은 정보를 게시하기 위해 여기로 돌아 왔습니다. 당신은 나를 이길! 그게 내가 자러 갈거야. :)
TunaMaxx

같은 문제가 있었지만 해결되었습니다. 감사!
dafyddPrys

8

Magento가 SUPEE 1533 호환성을 수정하기 위해 업데이트 된 SUPEE 8788 버전 을 출시 할 것 같습니다 . 지금 수동 수정을 적용하는 것이 좋은지 잘 모르겠습니다. 수동 변경은 향후 패치 업데이트를 손상시킬 수 있습니다. 당신의 생각을 듣고 싶습니다.

Magento Community Manager에 의해 확인되었습니다. 10 월 13 일 오후 3시 EST .. 1.9 이하 버전의 모든 패치가 다운로드 목록에서 삭제됩니다 https://www.magentocommerce.com/download?_ga=1.236497153.1889606568.1445610645 게시물 참조 : https://community.magento.com/t5 / 보안 패치 / SUPEE-8788- 및 -SUPEE-1533- 호환 불가능-덩크 오류 / mp / 50514 / highlight / false # M1805


1
경우 업데이트 된 패치가 우리의 설명서를 수정보다 정확히 같은 결과를 가지고, 나는 그런 경우 희망, 나는이 문제가 표시되지 않습니다. 업데이트 된 패치는 필요하지 않으며 향후 패치에는 차이가 없습니다.
Fabian Schmengler

1
@fschmengler는 SUPEE-7405 IMO의 PHP 5.5 비 호환성과 매우 유사합니다. 패치는 수동 수정 사항을 반영합니다.
Digital Pianism의 Raphael

1
@fschmengler 내 지식으로 magento는 수정과 함께 정확히 동일한 패치를 다시 릴리스합니다. 구식 패치 (자체 수정)를 제거하고 새 패치를 설치하는 것이 가장 좋습니다 (내일 출시 될 예정입니다. 내일까지 업데이트해야합니다. 도움을 주셔서 감사합니다!
Icon

나는이 기여의 가치를 의심하지는 않지만 Q & A 스타일을 고수 하면서이 답변은 나에게 답이 아닌 것 같습니다. @ fschmengler가 원래 질문에 추가 할 수있는 업데이트입니다. 커뮤니티 위키 답변).
7ochem

8

다른 게시물에서는 볼 수없는 다음과 같은 새로운 문제에 대한 보고서를 받고 있습니다.

  • 경우에 따라 새 릴리스의 예외-addCrumbs () 메소드 호출 (getStoreConfig (web / default / show_cms_breadcrumbs)이 정의되지 않은 경우). 패치에는 영향을 미치지 않아야하며 1.9.3 / 1.14.3 릴리스 만

1.9.1.0의 /lib/Unserialize/Reader/ArrValue.php에 'Unsupported data type N'메시지가있는 'Exception'및 패치 적용시 이전 버전 패치 버전 2에서 해결되었습니다.

현재 이러한 문제에 대한 알려진 쉬운 해결 방법은 없습니다. 우리는 그것들을 새로운 패치 버전으로 해결하기 위해 노력하고 있습니다.


지원되지 않는 데이터 유형 N 오류에 대한 가능한 수정 gist.github.com/balloz/ceaf5feb5ac66caaa82342441d32aa88
Raphael at Digital Pianism

1.6 및 1.7 버전에서 SUPEE 8788을 설치할 때 Curl.php 오류를 극복하는 방법에 대한 아이디어가 있습니까?
Icon

8

다운로드 가능한 제품에 대해 샘플 및 링크에 대해 동일한 파일을 동시에 업로드하면 업 로더가 중단됩니다. 두 영역에서 동일한 파일을 사용하는 경우에만 발생합니다. 패치 전에 제대로 작동했습니다.

재생산하려면 다운로드 가능한 제품을 편집하고 다운로드 가능한 정보 탭을 클릭 하십시오.

  1. 아코디언 의 샘플 행을 열고 샘플 파일을 찾으십시오.
  2. 아코디언 의 링크 행에서 다운로드 링크를 찾으십시오.
  3. 링크 섹션에서 파일 업로드를 클릭하십시오 .

업 로더는 다운로드 가능한 링크 파일 대신 샘플 파일을 업로드하고 다운로드 가능한 링크 섹션에서 찾은 파일이 사라집니다.

나는 1.7.0.2 CE 설치 패치로 바닐라에서 이것을 재현 할 수있었습니다.


이것은 업로드에 사용 된 기본 JS lib의 동작입니다. github.com/flowjs/flow.js/issues/76
Laura

6

예, 로그인 할 때 다른 문제가 발생했으며 항상 다음을 반환합니다.

Enterprise_Pci_Model_Observer 클래스 165 행에서

대신에:

if (!Mage::helper('core')->getEncryptor()->validateHashByVersion($password, $model->getPassword())) {

이것은 고칠 것이다 :

if (!Mage::helper('core')->getEncryptor()->validateHashByVersion($password, $model->getPasswordHash())) {

코어를 변경하는 것을 좋아하지 않기 때문에 (로컬로 이동하더라도) Magento 가이를 수정하거나 명확히하는 것이 가장 좋습니다. 현재 광산은 이것을 확장하고 getPassword ()에 대한 함수를 만들기 위해 새로운 확장을 만들고 있습니다 (모든 개발자가 개발자 모드를 사용하도록하기 때문에).


2
이제 패치의 V2를 적용한 후 EE1.12 패치와 동일한 문제가 발생합니다. 이 파일은 1.12와 1.14 사이에서 어느 시점에서 변경되었지만 패치의 일부로는 변경되지 않은 것 같습니다.
Chris

1
이것을 Magento와 함께 제기하고 문제를 해결하기 위해 추가 패치를 제공했습니다. 변경 사항은 위와 동일합니다.
Chris

6

패치 파일 편집

패치 파일을 편집해야하는 사람은 패치에서 캡슐화 된 이진 파일이 손상되므로 편집기에서 편집하지 않아야합니다.

명령 줄이 있으면 편리합니다. linux / * unix는 sed유틸리티를 사용하여 특정 줄을 제거하십시오.

팁을 위해 @fooman에게 제안합니다. 그의 원래 요점을 참조하십시오

sed -ie '101,111d' PATCH_SUPEE-8788_CE_1.7.0.2_v1-2016-10-11-06-36-18.sh

이것은 101 행에서 111 행까지 포함하여 삭제합니다.

양식 제출 문제.

위의 문제에 대해 언급 한 경우 다음을 수행 할 수도 있습니다.

<?= $this->getBlockHtml('formkey'); ?>

자세한 내용은이 게시물을 참조하십시오. getBlockHtml ( 'formkey') 란 무엇입니까?


4
과주의 <?=가 모든 PHP 설정에 사용할 수 없습니다
디지털 Pianism에서 라파엘

@RaphaelatDigitalPianism 당신이 맞습니다. <?=대부분의 php.ini 구성에서 기본적으로 활성화되어 있지만 일부 호스트는 비활성화하도록 선택합니다.
Sergei Filippov

5

CE 1.6.2.0 및 SUPEE-3941

보안 패치 SUPEE-8788 (버전 2)을 적용하려면 ( http://devdocs.magento.com/guides/m1x/other/ht_install-patches.html#apply-8788-new ) 먼저 SUPEE-3941을 적용하는 것이 좋습니다. .

그러나 패치 다운로드 페이지에는 CE 1.6.2.0 용 SUPEE-3941 패치가 없습니다. 패치는 CE 1.8 및 1.9에서만 사용 가능합니다.

이 글에서 언급했듯이, CE 1.7에서 사용 가능한 SUPEE-3941 패치 (CE 1.8 & 1.9)를 적용해도 괜찮습니다.

CE 1.6.2.0에 SUPEE-3941 (CE 1.8 및 1.9 용)을 적용해도됩니까? CE 1.6.2.0에 적용하려고 시도했는데 다음 오류가 발생했습니다.

Checking if patch can be applied/reverted successfully...
-e ERROR: Patch can't be applied/reverted successfully.

checking file downloader/Maged/Model/Connect.php
Hunk #1 succeeded at 489 (offset 3 lines).
checking file downloader/lib/Mage/Connect/Backup.php
checking file downloader/lib/Mage/Connect/Command.php
Hunk #1 FAILED at 64.
Hunk #2 succeeded at 205 with fuzz 2 (offset -44 lines).
Hunk #3 succeeded at 382 (offset -53 lines).
1 out of 3 hunks FAILED
checking file downloader/lib/Mage/Connect/Command/Install.php
Hunk #1 FAILED at 90.
Hunk #2 succeeded at 333 with fuzz 1 (offset 17 lines).
Hunk #3 succeeded at 363 (offset 17 lines).
1 out of 3 hunks FAILED
checking file downloader/lib/Mage/Connect/Packager.php
Hunk #4 FAILED at 268.
Hunk #5 FAILED at 290.
Hunk #6 succeeded at 369 with fuzz 2.
Hunk #7 FAILED at 377.
Hunk #9 FAILED at 428.
4 out of 10 hunks FAILED
checking file downloader/lib/Mage/Connect/Rest.php
Hunk #1 succeeded at 71 with fuzz 2 (offset -11 lines).
checking file downloader/lib/Mage/Connect/Singleconfig.php
Hunk #1 succeeded at 100 (offset -36 lines).
checking file downloader/lib/Mage/Connect/Validator.php
Hunk #1 succeeded at 418 (offset -41 lines).
Hunk #2 succeeded at 431 (offset -41 lines).
checking file downloader/lib/Mage/HTTP/Client/Curl.php
checking file downloader/template/settings.phtml

5

조금 늦었지만 패치 SUPEE-8788 V2 에서 최소한 Magento 1.7.0.2 및 1.7.0.1의 패치 파일에 적용되는 문제를 발견했습니다 . 아마도 이것은 패치 버전이 존재하는 모든 이전 버전에도 적용됩니다. 패치가 템플릿의 템플릿을 변경하지 않기 때문에 1.8 이상의 Magento 버전은 영향을받지 않습니다.

상세히

패치에 파일의 폼키가 없습니다 app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml

그것이 없으면 로그인이 한 페이지 체크 아웃에서 작동하지 않습니다 (오류없이 작동하지 않습니다).

고치다

다음 패치와 같이 폼키를 삽입해야합니다.

diff --git a/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml b/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml
index 9d15a577b..18483a3c5 100644
--- a/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml
+++ b/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml
@@ -71,6 +71,7 @@
         <h3><?php echo $this->__('Login') ?></h3>
         <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
         <form id="login-form" action="<?php echo $this->getPostAction() ?>" method="post">
+        <?php echo $this->getBlockHtml('formkey'); ?>
         <fieldset>
             <h4><?php echo $this->__('Already registered?') ?></h4>
             <p><?php echo $this->__('Please log in below:') ?></p>

4

1533 패치 사이트의 경우 PATCH_SUPEE-8788 *****. sh에서 아래 줄을 바꾸십시오.

diff --git app/code/core/Mage/Adminhtml/controllers/DashboardController.php app/code/core/Mage/Adminhtml/controllers/DashboardController.php
index 09ffc4c..367bf8e 100644
--- app/code/core/Mage/Adminhtml/controllers/DashboardController.php
+++ app/code/core/Mage/Adminhtml/controllers/DashboardController.php
@@ -91,7 +91,7 @@ class Mage_Adminhtml_DashboardController extends Mage_Adminhtml_Controller_Actio
         $gaHash = $this->getRequest()->getParam('h');
         if ($gaData && $gaHash) {
             $newHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
-            if ($newHash == $gaHash) {
+            if (hash_equals($newHash, $gaHash)) {
                 if ($params = unserialize(base64_decode(urldecode($gaData)))) {
                     $response = $httpClient->setUri(Mage_Adminhtml_Block_Dashboard_Graph::API_URL)
                             ->setParameterGet($params) 

으로, ~에 의하여:

diff --git a/app/code/core/Mage/Adminhtml/controllers/DashboardController.php b/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
index ab2d654..367bf8e 100644
--- a/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
@@ -91,9 +91,8 @@ class Mage_Adminhtml_DashboardController extends Mage_Adminhtml_Controller_Actio
         $gaHash = $this->getRequest()->getParam('h');
         if ($gaData && $gaHash) {
             $newHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
-            if ($newHash == $gaHash) {
-                $params = json_decode(base64_decode(urldecode($gaData)), true);
-                if ($params) {
+            if (hash_equals($newHash, $gaHash)) {
+                if ($params = unserialize(base64_decode(urldecode($gaData)))) {
                     $response = $httpClient->setUri(Mage_Adminhtml_Block_Dashboard_Graph::API_URL)
                             ->setParameterGet($params)
                             ->setConfig(array('timeout' => 5))
diff --git a/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php b/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
index da1b14a..b6d72c0 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
@@ -444,7 +444,7 @@ class Mage_Adminhtml_Block_Dashboard_Graph extends Mage_Adminhtml_Block_Dashboar
             }
             return self::API_URL . '?' . implode('&', $p);
         } else {
-            $gaData = urlencode(base64_encode(json_encode($params)));
+            $gaData = urlencode(base64_encode(serialize($params)));
             $gaHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
             $params = array('ga' => $gaData, 'h' => $gaHash);
             return $this->getUrl('*/*/tunnel', array('_query' => $params));

기본적으로 1533을 되돌리고 8788을 떠났습니다.


8788이 DashboardController.php의 변경 사항을 무시하고 원래 1533 변경 사항이 제거된다는 것을 이해합니다.
Icon

2
예, serialize ()를 json_encode ()로 바꾸는 1533의 목적은 공격 통과 가능성을 줄이는 것이 었습니다 ($ newHash == $ gaHash). 8788은 같은 목적으로 hash_equals ()를 추가하는 반면
William Zhao

대단한 방법으로 테스트 사이트에서 깨끗한 DashboardController.php (스톡 magento 파일)를 업로드하고 SUPEE 8788을 설치했다고 생각했지만,이 포럼과 신사 분들께 1533 년 Supee의 변경 사항을 수작업으로 다시 소개하겠다고 언급했습니다. 8988 수정 된 파일. 내 방법에 대해 어떻게 생각하세요?
Icon

아이콘, 위의 차이점을 살펴보십시오 .SUPEE 1533이 이미있는 경우 'app / code / core / Mage / Adminhtml / Block / Dashboard / Graph.php'에서 SUPEE 1533으로 업데이트 된 라인을 다시 변경해야합니다. 패치. 그렇지 않으면 Graph.php가 json 형식의 매개 변수를 발생시키고 unserialize ()를 통해이를 해독 할 수 없습니다.
William Zhao

4

패치를 적용한 후 Authorize.net 캡처가 중단됩니다. 승인은 정상적으로 작동하지만 송장에 지불을 캡처하면 "게이트웨이 오류 : 신용 카드 번호가 필요합니다"가 표시 됩니다. 지불 로그 파일은 현재 x_typeparam pass 값을 보여 auth_capture주지만 패치 전에는 prior_auth_capture어느 것이 잘 작동했는지 전달 했습니다. 이 문제가 발생하는 사람이 있습니까?

업데이트 :이 문제에 대한 수정-Authorize.net이 캡처하지 않음


4

SUPEE-8788과 함께 SSH를 사용하여 Magento 1.9.2.4의 복사본을 패치했습니다. SUPEE-8788과 함께 ftp를 사용하여 Magento 1.9.2.4의 다른 복사본을 패치했습니다. SUPEE-8788과 함께 SSH를 사용하여 magento 1.9.1.0의 복사본을 패치했습니다. magento 1.9.3.1의 새로운 사본을 사용함

SUPEE-8788을 사용하는 모든 magento 웹 사이트에서 동일한 문제가 발생합니다 (패치의 버그 일 수 있음)

"X"를 클릭하여 새 행 (하나 이상) 을 추가 하려고 할 때 다운로드 가능한 제품 사용 및 다운로드 가능한 정보-> 샘플로 이동 더 이상 행을 제거 할 수 없습니다여기에 이미지 설명을 입력하십시오

나는 Magento의 전문가가 아니므로 해결책을 찾고 있습니다. 내가 게시 할 것을 알게되면, 누군가의 해결책이 있다면 나에게 매우 유용 할 것입니다.

업데이트 : Chrome 관리자를 사용 하여이 오류가 발생했습니다.여기에 이미지 설명을 입력하십시오

******* 나는 해결책을 찾았다 *******

나는 2 일을 보냈고 이것이 다른 누군가를 도울 수 있기를 바랍니다. 이것은 SUPEE-8788의 버그입니다

안에 samples.phtml을여십시오 app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable

함수 찾기

remove : function(event){
    var element = $(Event.findElement(event, 'tr'));
    alertAlreadyDisplayed = false;
    if(element){
        element.down('input[type="hidden"].__delete__').value = '1';
        element.down('div.flex').remove();
        element.addClassName('no-display');
        element.addClassName('ignore-validate');
        element.hide();
    }
},

그리고 그것을 대체하십시오

remove : function(event){
    var element = $(Event.findElement(event, 'tr'));
    alertAlreadyDisplayed = false;
    if(element){
        element.down('input[type="hidden"].__delete__').value = '1';
        Element.select(element, 'div.flex').each(function(elm){
            elm.remove();
        });
        element.addClassName('no-display');
        element.addClassName('ignore-validate');
        element.hide();
    }
},

이것은 버그를 해결합니다


3

1.9.2.1을 실행하는 사이트의 테스트 사본에 PATCH_SUPEE-8788_CE_1.9.2.1_v1-2016-10-11-07-00-43을 적용했으며 체크 아웃이 중단되었습니다. 패치를 되 돌리면 결제가 다시 정상적으로 작동합니다.

주문을 제출하면 결제 성공 대신 장바구니로 돌아갑니다. 다시 시도하기 전에 .1 버전을 기다리고 있다고 생각하십시오.


주문이 저장되는 동안 예외가 발생하는 것처럼 들립니다. 로그를 확인하셨습니까?
simonthesorcerer

PHP 치명적인 오류 : 클래스 'Mage_Core_Helper_UnserializeArray'를 찾을 수 없습니다. 547 행의 ... / public_html / app / Mage.php
Adam Lavery

@AdamLavery Var / cache로 이동하여 캐시 폴더를 삭제하십시오. paches를 원래대로 되돌릴 때 오류가 발생합니다. 캐시입니다.
Icon

새로운 패치가 곧 나올 것입니다. 이것은 오류를 기대하지 않는 거대한 패치 업데이트입니다. 그렇습니다. 손가락이 건 crossed습니다.
Icon

1
누락 app/code/core/Mage/Core/Helper/UnserializeArray.php되었을 수 있습니다. 이것은 설치되지 않았을 수있는 SUPEE-6788에 추가되었습니다. SUPEE-8788에 SUPEE-6788에 대한 문서화되지 않은 종속성이있는 것 같습니다.
Tyler V.

3

Magento의 초기 전자 메일에 따르면 SUPEE-1533 및 SUPEE-3941 호환성 문제를 해결하기 위해 새 패치 버전을 생성 할 예정입니다. 아마 당신의 말을 조금만 잡고있을 수도 있습니다.

엔터프라이즈 에디션 1.14.3, 커뮤니티 에디션 1.9.3 및 SUPEE-8788 엔터프라이즈 에디션 1.14.3 및 커뮤니티 에디션 1.9.3은 120 개 이상의 품질 향상과 PHP 5.6 지원을 제공합니다. 또한 다음과 같은 중요한 보안 문제를 해결합니다. ...

... SUPEE-8788 패치는 이전 Magento 버전에서 이러한 보안 문제를 해결합니다. 불행하게도, 상점에서 SUPEE-1533 또는 SUPEE-3941 보안 패치를 이전에 적용한 경우 Community Edition 1.8 및 이전 릴리스 및 Enterprise Edition 1.13 및 이전 릴리스 용 SUPEE-8788 패치가 실패 함을 발견했습니다. 우리는이 문제를 해결하기 위해 노력하고 있으며 앞으로 1 ~ 3 일 안에 새로운 패치를 제공 할 것입니다. 그때까지 배포판에서 이러한 SUPEE-8788 패치 버전을 제거하고 있습니다 ...

그러나 활성 Magento 버전이 작동한다고 CE 1.9.3과 V1.8 이하 버전에서 곧 출시 될 것이라고 우려합니다. 나는 그들에게 연락 했으므로 그들이 무엇을 말하는지 기다릴 것이다.


실제로 "답변"은 아니지만 유용한 정보가 되길 바랍니다.
Jon Holland

안녕하세요, @fschmengler의 원래 질문을 편집하고 맨 아래에 UPDATE 로 추가 할 수도 있습니다 . 나는 그가 그것을 잘하고 그 편집을 승인 할 것이라고 생각합니다.
7ochem

좋은 생각이지만 누군가가 이미 무언가를 추가했습니다 :)
Jon Holland

3

나는 큰 패칭 팬이 아닙니다. 개인적으로 디렉토리에서 모든 Magento 파일을 제거한 다음 셸 스크립트를 사용하여 새 버전을 업로드합니다. 수년 동안 모듈이나 테마와 같이 설치된 모든 파일은 여전히 ​​존재합니다. 데이터베이스의 경우 새로 설치된 버전을 비교합니다. 한 가지 방법은 데이터베이스에 열 / 테이블을 생성하거나 제거하는 것이고, 다른 방법은 /app/etc/local.xml 파일 이름을 변경하여 Magento를 다시 설치하는 것입니다. 나는 첫 번째를 선호합니다.

데이터베이스 구조를 버전 1.9.3.0으로 변경하지 않으면 오류가 발생하거나 관리 영역을로드 할 수 없습니다. Magento CE 1.9.2.4와 1.9.3.0 간의 Magento 디렉토리 및 데이터베이스 비교에 관심이있는 사용자는 여기에서 파일을 다운로드하십시오.

마 젠토 비교 : 버전 1.9.2.4-1.9.3.0

시각적으로 매우 멋진 두 개의 html 파일이 있습니다.

나는 패치 대신 내 방법을 사용하여 오늘 4 개의 매장을 업데이트했습니다. 모든 문제없이 실행되고 있습니다.


최신 버전을 사용 중이고 1.9.2.2, 1.9.2.3 및 1.9.2.4의 경우와 같이 패치의 새 릴리스가있는 경우 유용합니다. 그러나이 패치의 경우 새 릴리스 1.9.2.5가 없습니다. . 버전 1.9.3.0에는 보안과 관련이없는 많은 추가 변경 사항이 포함되어 있습니다.
Fabian Schmengler

내 방법으로 보안 업데이트와 새로운 기능이 하나로 통합되었습니다. 유일한 문제점은 릴리스간에 파일 시스템 및 데이터베이스에서 발생하는 상황을 이해해야한다는 것입니다. 당신이 무엇을하고 있는지 알 때 큰 문제는 아닙니다. 그리고 당신은 더 나은 통제력을 가지고 있습니다. 1.7 버전 부터이 방법을 사용하고 있습니다.
ADDISON74

3

대부분의 Magento CE 설치에는 운이 없습니다 (총 6 개). 다른 버전 : 1.9.1, 1.9.0.1, 1.8.1.

올바른 해당 8788 패치를 다운로드했습니다. 해당되는 경우 1533을 되돌려 놓았습니다.

의심스러운 다음과 같은 주요 출력이 표시됩니다.

Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

...

checking file downloader/lib/Mage/HTTP/Client/Curl.php
Hunk #1 FAILED at 372.

... 파일 app / code / core / Mage / Adminhtml / controllers / IndexController.php 파일 확인 중 # 1이 373 (오프셋 -19 줄)에 성공했습니다. ...

can't find file to patch at input line 5810
|diff --git lib/Unserialize/Parser.php lib/Unserialize/Parser.php
|index 423902a..2c01684 100644
|--- lib/Unserialize/Parser.php
|+++ lib/Unserialize/Parser.ph

lib / Unserialize / Reader / Arr.php에 대해 위와 동일합니다. lib / Unserialize / Reader / ArrValue.php 그리고 그 덩어리가 무시되었다고 말합니다.

참고 : Unserialized / Reader 디렉토리에는 아무것도 없습니다. 완전히 비 웁니다. 참고 : Curl.php는 다운로더 디렉토리에 있습니다. 이름이 바뀌지 않았습니다. 완료되었지만 SWF 파일이 제거되지 않습니다. apply.patches.list 목록에 패치가 적용되지 않습니다.

말이되지 않습니다.


알았어 .. 다 알아 냈어. 모든 오래된 패치를 통해 순서대로 작동해야합니다. 적용되지 않은 몇 가지 오래된 패치가 있습니다. 일단 그것들을 풀고 라인에 적용하면 일들이 성공적으로 패치되기 시작했습니다. 그러나 모든 패치 파일에 대한 덩어리 오류가있을 때마다 패치로 이동하여 교체하려는 항목을 찾아 내 magento 설치에서 수동으로 수행해야한다는 것을 알았습니다. 그런 다음 패치에서 해당 "diff"행을 제거하고 다시 실행하십시오. 기본적으로 덩어리 오류가 발생하면 패치로 이동하여 +/-에서 시도한 내용을 확인한 다음 직접 수행하십시오.
Rich Yessian

3

나는 오늘 약 10 개의 웹 사이트를 패치했으며 SUPEE-8788 패치가 실패한 모든 사이트에는 SUPEE-6788 MISSING이 있습니다.

이로 인해 (예) 다음과 같은 오류가 발생했습니다.

can't find file to patch at input line 5810
|diff --git lib/Unserialize/Parser.php lib/Unserialize/Parser.php
|index 423902a..2c01684 100644
|--- lib/Unserialize/Parser.php
|+++ lib/Unserialize/Parser.php

SUPEE-6788을 설치 한 후 SUPEE-8788이 올바르게 패치되었습니다.


3

당신이 얻는 경우 Hunk #1 failedXXX 오류에,이 내가 무슨 짓을

알았습니다 Hunk #1 failed at 373. 오류 !! 줄 후에

파일 다운로더 /lib/Mage/HTTP/Client/Curl.php 확인

그래서 Curl.php파일을 확인하고 이전에 파일을 수정했음을 발견했습니다 (한 줄 주석 처리). 원본 파일을 복원하고 패치를 다시 실행했습니다. 그런 다음 패치가 성공했습니다. ;).

그런 다음 확인했습니다.

/app/etc/applied.patches.list & 모든 것이 좋아 보인다

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