foreach문에 대해 질문드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
foreach문에 대해 질문드립니다.

QA

foreach문에 대해 질문드립니다.

본문

안녕하세요

매번 sir회원님들의 도움을 많이 받아가고있는 클래스는영원히라고합니다.

정말 감사드립니다.

 

오전에 질문글을 올렸었는데 댓글채택을 잘못눌러버려 다시 질문글을 올리게되었습니다.

이런적이 처음인데 질문글의 답변을 채택하면 질문글이 그냥 종결되어버리는것인지도 여쭙습니다^^;;

 

 

다름이아니라


foreach ($f_idx_arr as $f_idx) {
    $result = $db->Execute($stmt, array($f_idx));
}
foreach문에서 이렇게 나열되어있을경우는

http://www.foodmall2020.com/check_proc.php?f_idx=1234&SqlType=food_delete
이런식 단일값을 집어서 삭제를 못하는지 궁금합니다.
혹시 누가 상품을 외부에서 f_idx값을 바꿔서 지운다고하면 문제가 커질 것 같아 여쭙습니다.

홈페이지 내부에서는 다행히 해결하여 잘 작동하는데 외부주소로 삭제는 불가할지 여쭙습니다.

감사합니다!

이 질문에 댓글 쓰기 :

답변 2

1.

foreach ($f_idx_arr as $f_idx) {
    $result = $db->Execute($stmt, array($f_idx));
}

> $f_idx_arr 변수의 값이 Array나 Object일 때, 그 크기만큼 반복합니다.

Array나 Object가 아니면 실행이 될까요?

 

2.

http://www.foodmall2020.com/check_proc.php?f_idx=1234&SqlType=food_delete
이런식 단일값을 집어서 삭제를 못하는지 궁금합니다.

> check_proc.php에서 어떻게 처리하느냐에 따라 삭제 여부가 달라집니다.
삭제할 수도 있고, 삭제하지 못할 수도 있지요. 아래에 추가.

 

3.

혹시 누가 상품을 외부에서 f_idx값을 바꿔서 지운다고하면 문제가 커질 것 같아 여쭙습니다.

홈페이지 내부에서는 다행히 해결하여 잘 작동하는데 외부주소로 삭제는 불가할지 여쭙습니다.

URL을 통해 f_idx, SqlType 값 2가지만을 이용해 정상적으로 레코드를 삭제할 수 있다면

그 값을 변경해 얼마든지 지울 수 있겠죠?
무작위 대입으로 인한 삭제를 막으려면

  - 관리자 여부 체크

  - 해당 레코드의 작성자 여부 체크

  - 접속 경로 체크(조작이 가능한 정보이긴 하지만)

  - 기타 등등(예로 하나 적어보자면 일회성 작업[사전에 밑준비가 필요하긴 하지만])

이런저런 추자적인 조건을 넣어 처리를 해주면 됩니다.
구현 나름이지요.

BiHon님 답변 감사드립니다!
작성자 여부체크 등 몇가지 조건을 넣어줘서 보안을 강화하면 되는군요!
== 조건식으로 바로 적용해봐야겠습니다.

꼼꼼한 설명 정말 감사드립니다!
향후 작업에도 많은 도움이 될 것 같습니다.
즐거운 하루 되세요^^

오타가 있었군요.
"이런저런 추가적인 조건을 넣어 처리를 해주면 됩니다." 로 정정합니다.

누락된 예 하나 추가합니다.
삭제 URL 접속 시, 관리자가 아닌 경우 "비밀번호" 입력 > 삭제 프로세스도 있습니다.

만약 걱정이되시면 로직을 조금 개선해보세요

 


foreach ($f_idx_arr as $f_idx) {
    $result = $db->Execute($stmt, array($f_idx));
}

 

이렇게 된 문장을

 

if (is_array($f_idx_arr)) {

    foreach($f_idx_arr as $_idx) {

        $result = $db->Execute($stmt, array($_idx));

    }

}

 

와 같이 하셔도 되고

이외에도 다양한 보강방법은 있습니다만

 

가장 간단하게 배열일때 해당 변수를 별도 분해를 하는건 안전한 방법입니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 76
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT