일반 사용자들을 위해 최소한의 세션 탈취는 막아야 겠죠...
댓글 1개
common.php에서 수정을 해서 멤버 세션 키값이 같지 않으면 로그아웃을 만들어서 세션 하이제킹을 막아보는 겁니다.
384라인에서 다음을 찾습니다.
$member = get_member($_SESSION['ss_mb_id']);
그 아래에 다음의 소스를 추가합니다:
// 정상적인 로그인의 경우 ss_mb_key가 생성됩니다. 세션탈취를 막으려면 이걸 이용해서 최대한 막아보는 것이 좋을 듯합니다.
if (get_session('ss_mb_key') != md5($member[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']))
goto_url("{$g4['bbs_path']}/logout.php");
408라인에서 다음을 찾아
$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g4['member_table']} where mb_id = '{$tmp_mb_id}' ";
아래의 코드로 바꿉니다:
$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify, mb_datetime from {$g4['member_table']} where mb_id = '{$tmp_mb_id}' ";
420~421 라인에서 다음을 찾습니다:
// 세션에 회원아이디를 저장하여 로그인으로 간주
set_session("ss_mb_id", $tmp_mb_id);
그 다음에 다음의 코드를 추가합니다:
set_session('ss_mb_key', md5($row[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));
이것은 XSS 를 이용하여 세션탈취를 했을 경우 그 세션으로 접근시 바로 로그아웃을 시키는 방법입니다. 세션을 탈취당하면 관리자로 어드민 페이지는 접근하지 못해도 일반 게시판에 올라와 있는 글들을 바꾸거나 전부 없앨 수도 있습니다. 관리자가 아니더라도 게시판 혹은 그룹 관리자의 세션 탈취도 무시를 못합니다. 그러므로 최소한 세션 탈취정도는 막아야 하지 않을까 해서 생각해보았습니다.
그러나 이것은 여전히 플래쉬로 공격하는 CSRF 는 어쩔수 없습니다. CSRF 는 속성상 해커가 아니라 사용자가 접근하는 것이기 때문에 정상적인 세션접근이기 때문이죠. 플래쉬는 무조건 막아야 합니다.
384라인에서 다음을 찾습니다.
$member = get_member($_SESSION['ss_mb_id']);
그 아래에 다음의 소스를 추가합니다:
// 정상적인 로그인의 경우 ss_mb_key가 생성됩니다. 세션탈취를 막으려면 이걸 이용해서 최대한 막아보는 것이 좋을 듯합니다.
if (get_session('ss_mb_key') != md5($member[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']))
goto_url("{$g4['bbs_path']}/logout.php");
408라인에서 다음을 찾아
$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g4['member_table']} where mb_id = '{$tmp_mb_id}' ";
아래의 코드로 바꿉니다:
$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify, mb_datetime from {$g4['member_table']} where mb_id = '{$tmp_mb_id}' ";
420~421 라인에서 다음을 찾습니다:
// 세션에 회원아이디를 저장하여 로그인으로 간주
set_session("ss_mb_id", $tmp_mb_id);
그 다음에 다음의 코드를 추가합니다:
set_session('ss_mb_key', md5($row[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));
이것은 XSS 를 이용하여 세션탈취를 했을 경우 그 세션으로 접근시 바로 로그아웃을 시키는 방법입니다. 세션을 탈취당하면 관리자로 어드민 페이지는 접근하지 못해도 일반 게시판에 올라와 있는 글들을 바꾸거나 전부 없앨 수도 있습니다. 관리자가 아니더라도 게시판 혹은 그룹 관리자의 세션 탈취도 무시를 못합니다. 그러므로 최소한 세션 탈취정도는 막아야 하지 않을까 해서 생각해보았습니다.
그러나 이것은 여전히 플래쉬로 공격하는 CSRF 는 어쩔수 없습니다. CSRF 는 속성상 해커가 아니라 사용자가 접근하는 것이기 때문에 정상적인 세션접근이기 때문이죠. 플래쉬는 무조건 막아야 합니다.
게시글 목록
| 번호 | 제목 |
|---|---|
| 1717629 | |
| 1717626 | |
| 1717625 | |
| 1717621 | |
| 1717619 | |
| 1717611 | |
| 1717610 | |
| 1717609 | |
| 1717607 | |
| 1717601 | |
| 1717598 | |
| 1717591 | |
| 1717590 | |
| 1717583 | |
| 1717575 | |
| 1717572 | |
| 1717568 | |
| 1717566 | |
| 1717549 | |
| 1717545 | |
| 1717533 | |
| 1717512 | |
| 1717511 | |
| 1717508 | |
| 1717495 | |
| 1717479 | |
| 1717473 | |
| 1717470 | |
| 1717463 | |
| 1717452 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기