제목 | 나쁜 $_POST 값이 들어온 경우 | ||
---|---|---|---|
글쓴이 | 밥아저씨 | 작성시각 | 2012/06/13 08:35:05 |
|
|||
-.- 생각하지 못한 부분이 있네요... Config에서 Form Validation을 설정 해뒀는데요. 검사를 통과 하더라도 이 외의 값이 들어왔을경우 해당 $_POST를 모두 Mysql 에 update 시키면 악용 가능 하다는 부분 인데요 예를들어 POST 값에는 'password' 만 들어 와야 하는데 사용자가 임의로 'id' 라는 input을 만들어 넣고 전송 시키면 테이블에 해당 id 칼럼의 값이 변경되어 버리죠... 현재는 저만의 라이브러리에 해당 $_POST array와 칼럼명 어레이 (반드시 받아야 할 칼럼 명들을 array('id', 'password', 'job') 을 넘겨서 foreach 문으로 원하지 않는 값은 unset 시켜주고 있는데요, 제 머리보다는 컴퓨터를 믿어보고자 좀더 편하게 FormValidation단에서 처리할 방법이 없을지 궁금합니다. |
|||
다음글 | Prepared Statements에 대한 궁금한사항입... (7) | ||
이전글 | CI에서의 Crontab 명령어 사용해서 php 실행하... (3) | ||
한대승(불의회상)
/
2012/06/13 09:20:32 /
추천
0
|
배강민
/
2012/06/13 09:40:57 /
추천
0
저 같은 경우에는
http://sample.cikorea.net/sample_view/class/form_validation 와 같이 form 체크 후의 값인 set_value 를 이용해서 해당 값을 이용합니다. $_POST를 직접 사용하진 않습니다. 이걸 직접 사용하면 form_validation 으로 필터링 된 값과는 따로 놀게되서요.. 전 이렇게하고 있는데.. 문의 주신게 이게 맞는지 잘 모르겠네요..ㅋ |
밥아저씨
/
2012/06/13 09:55:54 /
추천
0
불의회상// 칼럼명을 받는다기 보다는, input 값의 name 이 db의 칼럼명이 됩니다.
(액티브 데이터베이스에서 말이죠...) KangMin // set_value는 처음 알았네요. 그런데 제가 질문한 문제점을 제외하면 form_validation 으로 성공을 했으면 그냥 $_POST 으로 사용해도 되지 않나요? form_validation 으로 인하여 따로 값이 변경되거나 그렇지는 않기 때문에 xss_clean 등을 모두 거쳤으면 구지 상관은 없지 않을까욥?.. 다시 정리 하자면 password 필드 값을 넘겼는데 form_validation == true 상황을 가정 했을때 이 값을 데이터 베이스에 넣는경우 1... $this->form_validation->set_value('password'); 2... $this->input->post('password'); 3... $_POST['password']; 이 셋중 어느것을 써도 상관없지 않나요? 하는 질문입니다. |
배강민
/
2012/06/13 10:28:09 /
추천
0
헙.. 제가 잘못 알고 있었네요..
1,2,3 다 똑같네요... 아이고.. 혼란을 드려서 죄송합니다. |
한대승(불의회상)
/
2012/06/13 10:38:49 /
추천
0
컬럼명이 많거나 하면 귀차니즘 때문에 저도 그렇게 합니다.
값을 가져올때 $_POST 보다 $this->input->post() 를 사용 합니다. form_validation 은 value에 설정된 값을 기준으로 점검만 할 뿐이고 값을 직접 변경하거나 하는 작업은 하지 않습니다. 그래서 밥아저씨님이 현재 쓰고 계시는 방법이 가장 적절하다고 생각 합니다. |
밥아저씨
/
2012/06/13 11:11:46 /
추천
0
KangMin, 불의회상 님 // 감사합니다. 저도 더 많이 배워갑니다. (__)
|
foreach 문을 통하여 걸러 내는것이 현재로서는 제일 좋은 방법 같아 보입니다.