MySQL 8.0 이상 버전에서의 그누보드 비밀번호 검증 코드

· 2023-06-30 (금) 16:00:20 · 4399 · 4

카페 24에서 운영중이던 홈페이지를 수정사항이 생겨 로컬로 개발환경을 세팅해서 (php, db) 로그인을 해보려 했으나 로그인이 되질 않더라구요.

 

원인을 찾아보니 그누보드의 lib/common.lib.php 파일에서 비밀번호 검증 할때 쓰이는 코드 중 mysql 8.0 버전 이상에서는 사라진 mysql 함수가 있었습니다.

 

1890025293_1688107870.1125.png

 

위의 password(..) 함수가 더이상 존재하지 않고 대신에 SHA2() 함수를 사용하라고 스택오버플로우에서 얘기하더라구요

출처) https://stackoverflow.com/questions/52320576/in-mysql-server-8-0-the-password-function-not-working

 

그래서 해당 함수를 아래와 같이 바꿨습니다.

 

1890025293_1688108005.8052.png

 

기존의 password와 유사하게 문자열로부터 해쉬값을 생성하는 함수로 변경하고

 

DB 상에서는 phpmyadmin 에서 UPDATE 문을 사용해 수동으로 검증 코드에 맞게 mb_password 값을 변경해 주었습니다.

UPDATE g5_member SET mb_password = CONCAT('*', UPPER(SHA1(UNHEX(SHA1($value))))) WHERE mb_id = 'admin';

 

단, 저는 로컬에서 admin 계정만 이런식으로 임시방편으로 로그인이 가능하게 만든 것이고 이미 많은 수의 유저들이 사용하는 운영중인 홈페이지에서 mysql 8.0 으로 버전업에 사용하기엔 부적절한 방법 같습니다.

|

댓글 4개

2023-07-01 (토) 07:06:44
php 코드로 구현할 수도 있습니다.

password (4.1 이후 41자리): https://stackoverflow.com/a/27282287

old_password (4.0이하 버전 16자리): https://onlinephp.io/code/a7a66c7e4b79b52aaa9f948fc8b8f23fe2644492
사실.. 둘다 쓰면 안되고 pbkdf2 써야 해요.
2023-07-02 (일) 13:27:16
@라엘 저게 의도적으로 사용하기보다는 (사이트에 따라) 그누보드에서 여전히 사용되는 함수입니다.

PASSWORD() 함수가 사용되던 시절에 생성된 암호가 여전히 DB에 저장되어있을 때죠.
2023-07-03 (월) 09:46:01
github에 이슈로 등록해뒀습니다.
https://github.com/gnuboard/gnuboard5/issues/247
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

2,788건
+
제목 글쓴이 날짜 조회
23-07-30 조회 3,100
23-07-28 조회 3,951
23-07-25 조회 5,262
23-07-19 조회 3,924
23-07-12 조회 3,341
23-07-07 조회 4,524
23-07-07 조회 4,477
23-07-06 조회 3,823
23-07-03 조회 4,804
23-07-01 조회 3,760
23-06-30 조회 4,400
23-06-29 조회 6,122
23-06-25 조회 3,451
23-06-22 조회 3,742
23-06-17 조회 3,473
23-06-16 조회 4,000
23-06-12 조회 5,311
23-05-27 조회 4,186
23-05-26 조회 4,425
23-05-26 조회 3,900
23-05-23 조회 4,320
23-05-22 조회 4,880
23-05-22 조회 3,885
23-05-18 조회 4,317
23-05-18 조회 3,567
23-05-17 조회 4,401
23-05-16 조회 5,893
23-05-13 조회 3,766
23-05-12 조회 4,034
23-05-10 조회 4,011