관심거리

그누보드 "정상적으로 로그인하여 접근하시기 바랍니다." 해결방법 feat . cloudflare

ODB 2022. 11. 16. 12:18

최근에 그누보드로 작업을 하는데..

빈번하게 "정상적으로 로그인하여 접근하시기 바랍니다."라는 메시지를 봤다

관리자 계정으로 정상적으로 로그인을 했는데도 말이다..

아무래도 관리자를 확인하는 로직에 문제가 있는것이 아닌가 싶어 확인을 해봤더니

get_real_client_ip() function에 문제가 있는것으로 확인 되었다

나는 그누보드를 cloudflare뒷단에 두었는데 cloudflare가 중간에서 캐싱을 해버리니 get_real_client_ip()가 정상적으로 작동하지 않던 문제였는데

더 정확하게는 $_SERVER['REMOTE_ADDR']이 cloudflare서버의 아이피를 가져오고 이 아이피는 빈번하게 변경이 되어버리니 그누보드에서 생성하는 관리자키를 생성할때 취하는 방식인 md5($member['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']); 로 생성을 할때 get_real_client_ip()값이 cloudflare의 값으로 일정시간마다 변하는 유동적인 값을 가져오기에 md5로 해쉬화시킨값이 계속 변경이 되고 결과적으로 "정상적으로 로그인하여 접근하시기 바랍니다."를 계속 봐야한다는것이다.

그래서 lib/common.lib.php 파일 3818번째줄에 다음3줄을 추가하였다

    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }

그러면 기존 $_SERVER['REMOTE_ADDR'] 값을 cloudflare에서 받아오다가 $_SERVER["HTTP_CF_CONNECTING_IP"] 에서 값을 받아오게 된다. 그러면 의도한대로 잘 작동을 한다.