그누보드 비밀번호 암호화 적용법
본문
그누보드 검색해서 암호화 하는거를 찾았는데요..
$password = mysql_real_escape_string($_POST['password']);
insert into table set ps=PASSWORD('$password') ...
이걸 적용시키라는데
$mb_id = $_POST['mb_id'];
$mb_password = mysql_real_escape_string($_POST['mb_password']);
$mb_name = $_POST['mb_name'];
$mb_nick = $_POST['mb_nick'];
$mb_email = $_POST['mb_email'];
$stmt = mysqli_prepare($con, "INSERT INTO g5_member set mb_password=PASSWORD('$mb_password') VALUES (?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, "sssss", $mb_id, $mb_password, $mb_name, $mb_nick, $mb_email);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
이런식으로 해줬는데.. 값이 아예 안넘어가는데 혹시 틀린부분이 있는건가요??
$mb_password = get_encrypt_string($mb_password); 이거쓸려면
인클루드해서 써야하는건가요?
답변 6
로직이 조금 이상하다고 생각되는 부분을 몇개 나열해보겠습니다.
해결되셨으면 패스~
1. 가입할때 password를 수신하는 부분이 있나요?
password 부분을 대입하는 부분도 동일하게 맞추는게 어떨까요?
$mb_id = $_POST['mb_id'];
$mb_password = get_encrypt_string($mb_password); //비번을 수신받는 부분이 이상합니다.
$mb_name = $_POST['mb_name'];
$mb_nick = $_POST['mb_nick'];
$mb_email = $_POST['mb_email'];
이부분에서
$mb_password = get_encrypt_string($_POST['mb_password']); //비번을 수신받아야 할것 같은데요
// 상단에 있으면 패스
2. 가입하실때 컬럼이 이상합니다.
$stmtement = mysqli_prepare($con, " INSERT INTO g5_member VALUES (?, ?, ?, ?, ?) ");
mysqli_stmt_bind_param($stmtement, "sssss", $mb_id, $mb_password, $mb_name, $mb_nick, $mb_email);
mysqli_stmt_execute($stmtement);
부분이 정상작동되나요?
$stmtement = mysqli_prepare($con, " INSERT INTO g5_member (mb_id, mb_password, mb_name, mb_nick, mb_email) VALUES (?, ?, ?, ?, ?) ");
mysqli_stmt_bind_param($stmtement, "sssss", $mb_id, $mb_password, $mb_name, $mb_nick, $mb_email);
mysqli_stmt_execute($stmtement);
와 같이 g5_member (입력할컬럼명) values (입력할값)
또는
insert into g5_member
set column = value
;
되어야 정상작동으로 알고있습니다만..
3. 로그인하실때 로그인이 안된다하셨는데
가입할때와 같이
로그인할 비번을 입력받아서
$mb_id = $_POST['mb_id'];
$mb_password = get_encrypt_string($_POST['mb_password']);
$valid_password = sql_fetch("select password from g5_member where mb_id = '$mb_id'");
if ($mb_password != $valid_password) {
alert('비번이다릅니다");
}
// 이하 로그인 로직
이렇게 비교하는 로직이 정상적으로 존재하는 건가요?
(되어있으면 패스)
해당부분에서 각각 변수/상태를 출력을 해보심이 좋을것 같습니다.
$mb_password = $get_encrypt_string($mb_password); 이렇게 햇더니 페이지가 응답오류 나버리네요 왜이런건가요?
$mb_password = $get_encrypt_string($mb_password);
이게 아니라
$mb_password = get_encrypt_string($mb_password);
이렇게 사용해보세요
get_encrypt_string 함수는 common.lib.php 에 담겨있습니다.
기본적으로 레이아웃 내부에 사용할때는 별도로 인클루드하실필요는 없습니다.
인클루드가 필요하다면
common.lib.php 파일을 인클루드하시길 바랍니다
도움이 되셨다면 채택바랍니다. 감사합니다.
<?php
include_once('http://도메인명/lib/common.lib.php .php');
$con = mysqli_connect("localhost", "아이디", "패스워드", "디비명");
$mb_id = $_POST['mb_id'];
$mb_password = get_encrypt_string($mb_password);
$mb_name = $_POST['mb_name'];
$mb_nick = $_POST['mb_nick'];
$mb_email = $_POST['mb_email'];
$stmtement = mysqli_prepare($con, " INSERT INTO g5_member VALUES (?, ?, ?, ?, ?) ");
mysqli_stmt_bind_param($stmtement, "sssss", $mb_id, $mb_password, $mb_name, $mb_nick, $mb_email);
mysqli_stmt_execute($stmtement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>
이렇게 하는게 아닌가요? 조금이라도 도움좀 주세요..ㅠㅠ
1. include에 url은 넣으셔도 작동 안 합니다.
2. 그누보드 함수(get_encrypt_string)를 사용해야 하는 이유가 있나요?
이걸 include하려면 config.php 파일도 같이 include를 하셔야 합니다.
config.php 파일에 G5_STRING_ENCRYPT_FUNCTION 상수를 정의할 때 거기에 적힌 값을 참고해서 get_encrypt_string 이 함수를 작동시킵니다.
만약 그누보드를 운영 중이시라면 저 부분 설정을 md5로 바꾸기만 해도 문제가 발생할 겁니다.
기존 회원 테이블에 저장되어 있는 패스워드 암호화 체계가 달라지니까요.
$mb_password = md5($mb_password);
결론은 위에 쓰신 내용 코드에서 $mb_password 부분만 이렇게 바꾸셔도 아마 정상적으로 작동할 겁니다.
그 밑에 $response 변수는 왜 있는 건지 알 수 없지만요.