Extra Form
PHP PHP 7.2
CMS XpressEngine

up.png

 

 

오늘 갑자기 저게 뜨네요. 이럴 경우 모듈 어디를 점검해 봐야 하나요? 따로 모듈을 수정하거나 한 것이 없습니다. 또 모듈의 버전이 업데이트 되었다는 메시지는 아닙니다. 모듈 자체에서 뭔가 변경이 필요하다는 것이 작동한 것 같은데요.

 

어디 어디를 점검해봐야 하나요? 모듈 업데이트 하기 눌러도 변화는 없네요.

  • profile
    저희 서버가 이상해진건지 모듈 자체가 원래 문제 있었던건지 오늘 갑자기 보이는거로 봐서는 모듈이 원래부터 이상이 있었다고 보기는 좀 힘들것 같긴 하지만 코드좀 봐주면 좋겠습니다.


    https://github.com/ajkj/xe-auto_login_module/commit/1ef22f12a35275cd135689fef10b06c1a31fbc3e


    여기 커밋에 보면 ..

    size를 제거하는 커밋이 있는데요.


    https://github.com/ajkj/xe-auto_login_module/blob/master/auto_login.class.php#L75-L104
    https://github.com/ajkj/xe-auto_login_module/blob/master/auto_login.class.php#L127-L154

    이 부분에는 위 커밋과 관련해 제거된게 없어 보이는데

    문제가 없는건가요???
  • profile profile
    https://github.com/ajkj/xe-auto_login_module/blob/master/auto_login.class.php#L249
    여기에서부터 시작하는 코드가 관리자페이지에서 true를 반환하면 업데이트 버튼이 생기게 되는 겁니다. 왜 생기는지부터 찾고 그다음 moduleUpsate에서 그 작업이 되는질 찾아야 합니다.
  • profile profile
    네. 거기서 체크를 해서 왜 업데이트가 되도록 판단이 되었는지 궁금하네요. 제가 이 모듈을 건드리거나 한 적은 없고 또 사용되는 db 테이블도 정상이고 혹시 몰라 repair 해봐도 동일하네요.
  • profile profile

    혹시 모듈업데이트 하기 를 누가 발생시키는지 콘솔에서라도 볼수 있게 코드를 추가해 볼 수 있을까요? 해보질 않아서 어떻게 하는지는 몰라서요.

     

    일단 무식하게 체크하는 부분들을 주석해가면서 테스트를 해보는 것으로....

  • profile

    일단 업데이트가 발생되는 부분은

    https://github.com/ajkj/xe-auto_login_module/blob/master/auto_login.class.php#L374-L377
    여기로 확인이 되었습니다.


    if(empty($this->config->auto_login_cookie_encryption_cipher_mode) ||
    $this->config->auto_login_cookie_encryption_cipher_mode !== AesPhpSimple::getPreferedMode() ){
    return true;
    }

    1.png



    모듈 설정의 쿠키 암호화 부분인데....

    이 모듈이 설정이 약간 특이한게 설정 저장을 누르면 메시지 출력되는 부분이 없습니다. 그런데 변경사항은 저장이 잘 되거든요.

  • profile
    db에 저장된 값은
    s:40:"auto_login_cookie_encryption_cipher_mode";N;

    이렇게 되어있는데 이게 잘못된건지는 봐도 잘 모르겠네요.
  • profile
    모듈 업데이트 버튼을 눌렀을 경우

    if(empty($this->config->auto_login_cookie_encryption_cipher_mode) ||
    $this->config->auto_login_cookie_encryption_cipher_mode !== AesPhpSimple::getPreferedMode() ) {
    $this->config->auto_login_cookie_encryption_cipher_mode = AesPhpSimple::getPreferedMode();
    }

    $oModuleController = getController('module');
    $oModuleController->insertModuleConfig('auto_login',$this->config);





    $this->config->auto_login_cookie_encryption_cipher_mode = AesPhpSimple::getPreferedMode();


    AesPhpSimple::getPreferedMode() 의 결과값이 제대로 저장이 안되는건지 아니면 결과값 자체가 이상하게 나오는건지 ...
  • profile
    제가 금요일 서버 업데이트를 했습니다. 이때 oepnssl 도 업데이트가 되었는데요.
    이때 변경이 있는 듯 합니다.
    openssl_get_cipher_methods()
    을 직접 출력해보니 아래와 같습니다.

    Array ( [0] => aes-128-cbc [1] => aes-128-cbc-hmac-sha1 [2] => aes-128-cbc-hmac-sha256 [3] => aes-128-ccm [4] => aes-128-cfb [5] => aes-128-cfb1 [6] => aes-128-cfb8 [7] => aes-128-ctr [8] => aes-128-ecb [9] => aes-128-gcm [10] => aes-128-ocb [11] => aes-128-ofb [12] => aes-128-xts [13] => aes-192-cbc [14] => aes-192-ccm [15] => aes-192-cfb [16] => aes-192-cfb1 [17] => aes-192-cfb8 [18] => aes-192-ctr [19] => aes-192-ecb [20] => aes-192-gcm [21] => aes-192-ocb [22] => aes-192-ofb [23] => aes-256-cbc [24] => aes-256-cbc-hmac-sha1 [25] => aes-256-cbc-hmac-sha256 [26] => aes-256-ccm [27] => aes-256-cfb [28] => aes-256-cfb1 [29] => aes-256-cfb8 [30] => aes-256-ctr [31] => aes-256-ecb [32] => aes-256-gcm [33] => aes-256-ocb [34] => aes-256-ofb [35] => aes-256-xts [36] => aria-128-cbc [37] => aria-128-ccm [38] => aria-128-cfb [39] => aria-128-cfb1 [40] => aria-128-cfb8 [41] => aria-128-ctr [42] => aria-128-ecb [43] => aria-128-gcm [44] => aria-128-ofb [45] => aria-192-cbc [46] => aria-192-ccm [47] => aria-192-cfb [48] => aria-192-cfb1 [49] => aria-192-cfb8 [50] => aria-192-ctr [51] => aria-192-ecb [52] => aria-192-gcm [53] => aria-192-ofb [54] => aria-256-cbc [55] => aria-256-ccm [56] => aria-256-cfb [57] => aria-256-cfb1 [58] => aria-256-cfb8 [59] => aria-256-ctr [60] => aria-256-ecb [61] => aria-256-gcm [62] => aria-256-ofb [63] => bf-cbc [64] => bf-cfb [65] => bf-ecb [66] => bf-ofb [67] => camellia-128-cbc [68] => camellia-128-cfb [69] => camellia-128-cfb1 [70] => camellia-128-cfb8 [71] => camellia-128-ctr [72] => camellia-128-ecb [73] => camellia-128-ofb [74] => camellia-192-cbc [75] => camellia-192-cfb [76] => camellia-192-cfb1 [77] => camellia-192-cfb8 [78] => camellia-192-ctr [79] => camellia-192-ecb [80] => camellia-192-ofb [81] => camellia-256-cbc [82] => camellia-256-cfb [83] => camellia-256-cfb1 [84] => camellia-256-cfb8 [85] => camellia-256-ctr [86] => camellia-256-ecb [87] => camellia-256-ofb [88] => cast5-cbc [89] => cast5-cfb [90] => cast5-ecb [91] => cast5-ofb [92] => chacha20 [93] => chacha20-poly1305 [94] => des-cbc [95] => des-cfb [96] => des-cfb1 [97] => des-cfb8 [98] => des-ecb [99] => des-ede [100] => des-ede-cbc [101] => des-ede-cfb [102] => des-ede-ofb [103] => des-ede3 [104] => des-ede3-cbc [105] => des-ede3-cfb [106] => des-ede3-cfb1 [107] => des-ede3-cfb8 [108] => des-ede3-ofb [109] => des-ofb [110] => desx-cbc [111] => id-aes128-CCM [112] => id-aes128-GCM [113] => id-aes128-wrap [114] => id-aes128-wrap-pad [115] => id-aes192-CCM [116] => id-aes192-GCM [117] => id-aes192-wrap [118] => id-aes192-wrap-pad [119] => id-aes256-CCM [120] => id-aes256-GCM [121] => id-aes256-wrap [122] => id-aes256-wrap-pad [123] => id-smime-alg-CMS3DESwrap [124] => rc2-40-cbc [125] => rc2-64-cbc [126] => rc2-cbc [127] => rc2-cfb [128] => rc2-ecb [129] => rc2-ofb [130] => rc4 [131] => rc4-40 [132] => rc4-hmac-md5 [133] => seed-cbc [134] => seed-cfb [135] => seed-ecb [136] => seed-ofb [137] => sm4-cbc [138] => sm4-cfb [139] => sm4-ctr [140] => sm4-ecb [141] => sm4-ofb ) 1


    모듈에서 찾고 있는 것이..

    static public function getPreferedMode(){
    $arr = openssl_get_cipher_methods();
    foreach( $arr as $key => $val){
    if($val === 'AES-128-CTR'){
    return 'AES-128-CTR';
    }
    }
    foreach( $arr as $key => $val){
    if($val === 'AES-128-CBC'){
    return 'AES-128-CBC';
    }
    }
    return null;
    }


    이렇게 되어있었는데요. 이제 대문자로 된 것은 보이지 않습니다. 이것 소문자로 바꾸면 될까요??
  • profile
    일단 null 값이 넘어올 수 밖에 없는 현재 대문자로 확인하는 부분을 소문자로 고쳐서 설정이 제대로 할 수 있도록 고쳤습니다.

    static public function getPreferedMode(){
    $arr = openssl_get_cipher_methods();
    foreach( $arr as $key => $val){
    if($val === 'aes-128-ctr'){
    return 'AES-128-CTR';
    }
    }
    foreach( $arr as $key => $val){
    if($val === 'aes-128-cbc'){
    return 'AES-128-CBC';
    }
    }
    return null;
    }



    실제 리턴하는 값이 모듈에서 사용될 수 있어서 저기는 일단 대문자로 유지했습니다.
    이후 의견 계시면 수정하도록 하겠습니다.
  • profile
    모듈 전체를 검색해보니 파일 한곳에서만 사용되고 있어 모두 소문자로 다 고치는게 좋을 것 같네요. 그렇게 하고 마무리해야 겠습니다.

    이것 해결하는데 반나절을 다 보내다니..