본문
작성: freeimage.kr 김성대
그누보드에서 CSRF 보안 결함 으로 인해 다른 PC 관리자로 로그인 방지하는방법 (IP검사)
방법 로그인할때 회원정보의 mb_10 필드에 접속시 IP를 저장해두고
common 에서 $member 를 읽을때 현재 IP 와 비교하고 틀리면 로그아웃 처리함..
1. /bbs/login_check.php 에서
// 회원아이디 세션 생성
set_session('ss_mb_id', $mb[mb_id]); 다음줄에 추가한다..
========================
//CSRF 보안 결함을 방지하기위해 다 IP에서 로그인시 DB 정보와 비교해서 다른 IP면 세션 종료하기
$sql="update {$g4['member_table']} set mb_10='".$_SERVER['REMOTE_ADDR']."'where mb_id = '$mb[mb_id]' ";
sql_query($sql);
========================
2. common.php 에서
// 회원이 아니라면 권한을 방문객 권한으로 함
if (!($member['mb_id']))
$member['mb_level'] = 1;
else
$member['mb_dir'] = substr($member['mb_id'],0,2);
다음줄에 추가한다.
========================
//로그인된경우 마지막 IP와 비교해서 다르면 자동 로그아웃
if ($member['mb_id'] && $member['mb_10'] && $member['mb_10']!=$_SERVER['REMOTE_ADDR']) {
session_unset(); // 모든 세션변수를 언레지스터 시켜줌
session_destroy(); // 세션해제함
set_cookie("ck_mb_id", "", 0);
set_cookie("ck_auto", "", 0);
$sql="update {$g4['member_table']} set mb_10='' where mb_id = '$member[mb_id]' ";
sql_query($sql);
echo "<script language='javascript'> window.location='/bbs/login.php'; </script>";
exit;
}
========================
댓글목록
등록된 댓글이 없습니다.