Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

라이믹스 최신버전인데요. 회원가입,글쓰기 등에만 구글 리캡챠를 적용하도록 로그인에는 체크를 해제해서 설정했는데 로그인 시도시에도 캡챠가 떠서 설정과 다르게 동작하는데요.

 

이게 원인이 무얼까요?? 레이아웃에서 레이어 팝업으로 뜨는 로그인 창에 캡차가 뜹니다.

 

댓글도 캡차를 적용되게 해서그럴까요? 만약 그렇다면 이건 어떻게 해결해야 할까요?

  • profile
    https://github.com/rhymix/rhymix/blob/master/modules/spamfilter/spamfilter.controller.php#L247 이쪽 코드쪽에서 문제가 있는 것 같은데요.

    self::$_captcha_actions[$action]
    $obj->act
    $action
    각각 디버깅을 했을때 어떤 값들이 나오나요?
  • profile profile
    아직 디버깅은 안했는데 댓글을 적용했을때 발생합니다.

    댓글을 제외하면 로그인창에 캡챠가 뜨지 않아요. 게시판 화면에서 로그인 시도시 && 댓글 작성 캡챠 사용시 발생하는 문제 같습니다.
  • profile profile
    댓글 작성을 포함했을 경우


    01. '/^(?:disp|proc)Member(?:SignUp|Insert)/i'
    modules/spamfilter/spamfilter.controller.php:247
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    02. 'dispBoardContent'
    modules/spamfilter/spamfilter.controller.php:248
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    03. 'signup'
    modules/spamfilter/spamfilter.controller.php:249
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    04. '/^(?:disp|proc)Member(?:FindAccount|ResendAuthMail)/i'
    modules/spamfilter/spamfilter.controller.php:247
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    05. 'dispBoardContent'
    modules/spamfilter/spamfilter.controller.php:248
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    06. 'recovery'
    modules/spamfilter/spamfilter.controller.php:249
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    07. '/^(?:disp|proc)Board(Write|InsertDocument)/i'
    modules/spamfilter/spamfilter.controller.php:247
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    08. 'dispBoardContent'
    modules/spamfilter/spamfilter.controller.php:248
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    09. 'document'
    modules/spamfilter/spamfilter.controller.php:249
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    10. '/^(?:disp|proc)Board(Content|InsertComment)/i'
    modules/spamfilter/spamfilter.controller.php:247
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    11. 'dispBoardContent'
    modules/spamfilter/spamfilter.controller.php:248
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    12. 'comment'
    modules/spamfilter/spamfilter.controller.php:249
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
  • profile profile
    댓글 작성을 제외했을 경우


    01. '/^(?:disp|proc)Member(?:SignUp|Insert)/i'
    modules/spamfilter/spamfilter.controller.php:247
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    02. 'dispBoardContent'
    modules/spamfilter/spamfilter.controller.php:248
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    03. 'signup'
    modules/spamfilter/spamfilter.controller.php:249
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    04. '/^(?:disp|proc)Member(?:FindAccount|ResendAuthMail)/i'
    modules/spamfilter/spamfilter.controller.php:247
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    05. 'dispBoardContent'
    modules/spamfilter/spamfilter.controller.php:248
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    06. 'recovery'
    modules/spamfilter/spamfilter.controller.php:249
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    07. '/^(?:disp|proc)Board(Write|InsertDocument)/i'
    modules/spamfilter/spamfilter.controller.php:247
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    08. 'dispBoardContent'
    modules/spamfilter/spamfilter.controller.php:248
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
    09. 'document'
    modules/spamfilter/spamfilter.controller.php:249
    classes/module/ModuleHandler.class.php:1268
    classes/module/ModuleObject.class.php:619
    classes/module/ModuleHandler.class.php:665
    index.php:52
  • profile profile
    로그인 시도인데 왜 signup 값이 나오고 있을까요?
    실제로 웹에서 디버깅 제공해주는 툴 말고 로그를 통해서 로그인에 사용되는 액션을 캐치해주시면 좋겠습니다.
  • profile profile
    로그인 시도라고 보기 어렵습니다. 모든 화면에서 로그인 html은 항상 존재하고 레이어로 뜨는거니까요. 이부분은 이미 언급해드렸습니다.
  • profile profile

    아 다시 확인해보니 해당 값이 foreach 이고 실제로 인덱스를 콕 찝어 가져온느 방식이 아니라 여러 데이터가 발생될 수 있겠군요.

    그런데 디버그상으로 볼때 충분히 로그인상황에서 실행을 하지 않도록 해주고 있는데 다른 액션에서 recovery 라는 액션같이 이런 쪽에서 중복이 일어나는 것 같네요. 거기에서 ture 가 걸리니 실제로 스팸필터에도 넘어가는 것 같네요

    @기진곰 스팸필터를 액션별로 나눠서 특정 act 값을 통합적으로 인식하지 않고 분리해야 할 듯 합니다.

     

    로그인은 로그인화면에서만 하는 것이 아니니까요

  • profile

    댓글폼과 로그인폼 모두 화면이 따로 있는 것이 아니라 (로그인폼은 별도의 화면으로 구현할 수도 있지만) 다른 화면에 끼워넣는 것이다 보니 혼란이 발생하는 모양입니다. 대개 스킨이 레이아웃보다 먼저 해석되니까, 댓글폼에 넣으라고 만들어서 $captcha 변수에 담아놓은 캡챠를 로그인 폼이 자기 것인 줄 알고 줍줍한다거나...

     

    만약 레이아웃의 로그인 폼 소스에 {$captcha}라고 되어 있다면 이걸 지우는 것으로 간단하게 해결할 수 있지 않을까 싶네요. 서버단에서 설정이 꼬인 것이 아니라 스킨과 레이아웃이 캡챠 쟁탈전을 펼치고 있는 것뿐이라면 실제로 로그인 할 때 캡챠를 풀지 않더라도 서버단에서 통과시켜 줄 테니까요.

  • profile profile

    로그인 폼에 {$captcha} 는 존재하지 않습니다. 모든 페이지에서 이 로그인 폼이 노출되고 있고(클릭시 레이어로 보이는 것일뿐.) 해서 댓글이나 다른 선택이 영향을 줘서 로그인폼에까지 캡챠를 띄우는 것 같습니다.

    물론 해당 페이지는 게시판 목록이라 댓글 작성 폼 자체도 보이지 않는 곳 이었습니다.

     

     

    재밌는건 글작성 캡챠사용 설정을 해 놓은경우 게시판에 접근한 경우 로그인 폼에 캡챠가 안나옵니다.

    글쓰기 폼으로 전환되면 거기서 제대로 나옵니다.

  • profile profile
    로그인 폼에 {$captcha}라는 코드가 없다면 강제로 끼워넣어 주는 과정에서 생기는 문제라고 볼 수 있겠군요.