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

· 2년 전 · 2286 · 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개

php 코드로 구현할 수도 있습니다.

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

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

PASSWORD() 함수가 사용되던 시절에 생성된 암호가 여전히 DB에 저장되어있을 때죠.
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

+
제목 글쓴이 날짜 조회
2년 전 조회 2,600
2년 전 조회 1,789
2년 전 조회 1,804
2년 전 조회 3,545
2년 전 조회 1,085
2년 전 조회 1,711
2년 전 조회 2,770
2년 전 조회 1,968
2년 전 조회 1,326
2년 전 조회 2,509
2년 전 조회 2,402
2년 전 조회 1,874
2년 전 조회 2,743
2년 전 조회 1,789
2년 전 조회 2,287
2년 전 조회 3,944
2년 전 조회 1,484
2년 전 조회 1,879
2년 전 조회 1,568
2년 전 조회 2,063
2년 전 조회 3,093
2년 전 조회 2,282
2년 전 조회 2,453
2년 전 조회 1,978
2년 전 조회 2,299
2년 전 조회 2,862
2년 전 조회 1,941
2년 전 조회 2,326
2년 전 조회 1,724
2년 전 조회 2,336