채택완료

회원정보 수정에서

2018-06-14 (목) 12:06:43 3,141

/bbs/register_form_update.php 에서

아래와 같은 검사가 왜 필요한지 모르겠습니다.

    if (trim($_POST['mb_id']) != $mb_id)
        alert("로그인된 정보와 수정하려는 정보가 틀리므로 수정할 수 없습니다.\\n만약 올바르지 않은 방법을 사용하신다면 바로 중지하여 주십시오.");

어짜피  쿼리할 때 $mb_id로 넣고 => where mb_id = '$mb_id' ";

$mb_id는 위에서 세션값으로 받아오기 때문에 임의 수정이 불가능한데 위와같은 검사를 해주는 이유가 무엇인가요?

답변 2개 / 댓글 2개

채택된 답변
+20 포인트
2018-06-14 (목) 16:21:36

상단에

Copy
if($w == 'u')
    $mb_id = isset($_SESSION['ss_mb_id']) ? trim($_SESSION['ss_mb_id']) : '';

코드가 있습니다. 수정모드일 때 $mb_id 는 로그인한 유저의 ID 값을 지닙니다.

Copy
if (trim($_POST['mb_id']) != $mb_id)
        alert("로그인된 정보와 수정하려는 정보가 틀리므로 수정할 수 없습니다.\\n만약 올바르지 않은 방법을 사용하신다면 바로 중지하여 주십시오.");

어떤 부정한 툴을 사용하여 (등등), 로그인한 ID 와 수정하려는 회원정보 ID 값이 다른 경우를 막고자 하는 코드입니다.

ex. A회원이 로그인한 뒤, 부정한 방법을 사용하여 B회원의 회원정보를 수정하려고 할 때

답변에 대한 댓글 2개

근데 어짜피 쿼리하는 내용에서 $_POST['mb_id'] 아닌 $mb_id값(세션값이라 수정 불가)으로 들어가기 때문에 자신의 정보외에 수정이 불가능하지 않나요?
$_POST['mb_id'] 값이야 충분히 변경가능하니까 신경쓰지 않아도 되고..
2018-06-15 (금) 16:01:27
DB 저장 부분은 이중 예방 성격일 수 있습니다.

DB 저장이 세션 id 로 저리하는 것으로 2차적 예방의 성격으로 처리도 시키고,

저장이 되든, 안되든 부정적인 접근에 대해서 '경고'할 수는 있을 것입니다.
(로그인 -> 정보수정 -> 수정시키지 못하는 id 를 크롬 개발자 도구로 수정하는 등의 방법 사용)

물론, 이러한 노파심 코드는 개발자의 취향의 영역일 수는 있습니다.
2018-06-14 (목) 13:16:22

경고창을 출력해 주는 효과도 있고 혹시나 그 이후의 코딩에서 실수를 하는 걸 예방하는 효과도 있는 거죠.

답변을 작성하려면 로그인이 필요합니다.