보안을 위해서 post_delete로 넘겨야 하는데, del로 넘기고 있습니다.
adm/member_delete.php를 GET type으로 바꾸는 것은 정답이 아니고 틀린 답 입니다.
post_delete를 쓸 수 있게 수정해 주는 것이 맞습니다.
adm/member_form의 삭제 버튼 부분의 코드를 다음과 같이 수정 합니다.
<input type=button class=btn1 value=' 삭 제 ' onclick="post_delete('./member_delete.php','<?=$mb[mb_id]?>');">
그리고 밑에 아래 코드를 추가 합니다.
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.mb_id.value = val;
f.admin_password.value = document.fmember.admin_password.value;
f.action = action_url;
f.submit();
}
}
</script>
f.mb_id.value = val;
f.admin_password.value = document.fmember.admin_password.value;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='w' value='d'>
<input type='hidden' name='mb_id'>
<input type='hidden' name='admin_password'>
</form>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='w' value='d'>
<input type='hidden' name='mb_id'>
<input type='hidden' name='admin_password'>
</form>
추가로, adm/member_delete.php의 9 라인에 아래의 코드를 추가하면
XSS/CSRF 방어를 위한 조치가 됩니다 (이부분에는 코드가 누락되어 있다는)
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
alert("패스워드가 다릅니다.");
}
- opencode.co.kr -