개발 Q&A

제목 URL과 view direct
글쓴이 eugene 작성시각 2013/08/29 19:53:39
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 14203   RSS
현재 localhost에서 작업중입니다..

localhost/index.php/myhome/function/variable

이런식으로 접속하는걸로 알고있습니다.
여기서 myhome에 check라는 함수가 있는데 거기서 비밀번호를 확인하고 비밀번호가 맞다면
javascript로 document.location.replace("localhost/index.php/myhome/ok/1"); 사용하여 해당 페이지로 가고싶습니다.
하지만 문제점이 1이라는 값이 URL에 보이기 때문에 비밀번호를 확인하는 view에 접근하지 않고 실제로 주소에
http://localhost/index.php/myhome/check/1을 직접 타이핑하면 해당 view로 접속이 가능해집니다.
1이라는 변수가 보여서 상당히 보안에 취약하다고 생각합니다.
힌트를 주시면 감사하겠습니다.  
 
 다음글 이상하네요. (3)
 이전글 서버를 이전하고 나서.. (2)

댓글

변종원(웅파) / 2013/08/29 20:04:54 / 추천 0
비밀번호가 맞으면 세션으로 만들고 사용하시거나 post전송해서 쓰면 됩니다.
eugene / 2013/08/30 10:52:07 / 추천 0
 그렇다면 세션이 없다면 접속이 불가능하게 하면 된다는 말씀이신지 궁금합니다.
 또한 post전송으로 보내고 해당페이지에 접근하게되면 url에는 값이 안보이는 건가요?
 애초에 post전송으로 하고 그값을 확인하는 절차를 거치는것이 안전할까요ㅠㅠ? 
 굉장히 고민이 되는 부분입니다.ㅠ
변종원(웅파) / 2013/08/30 11:16:14 / 추천 0
eugene/ 일단 뭘 하고 싶으신 건지 올려주세요.
그러면 그것에 맞는 프로세스를 알려드릴께요.

단편적으로 해당기능에 대한 것만 있어서 전체적인 프로세스를 알수가 없습니다.

이럴때는 이런 패턴, 저럴때는 저런 패턴 등 많이 사용되는 패턴이 있습니다.
eugene / 2013/08/30 11:19:03 / 추천 0
 아 죄송합니다.
 우선은 정보수정쪽을 만들고 싶었습니다.
 내정보에 들어가기전에 현재 비밀번호를 확인하고 확인이 된다면 정보수정이나 비밀번호 변경 페이지로 넘어갈 수 있게 하고 싶습니다.
  그런데 비밀번호를 확인하는 페이지에서 확인이 되지 않았는데도 직접 URL을 작성하여 들어가는걸 막을수 있었으면 좋겠습니다.
 그래서 말씀하신 세션을 사용하라는 말씀에서 새로운 세션을 하나 생성하여 그곳에 비밀번호 확인이 되어있는지에 대한 데이터를 저장하여 컨트롤러단에서 데이터의 유무를 확인 후 접근 가능하게 하는 건 어떨까라는 생각을 했습니다. 물론 컨트롤러단에서 함수는 private으로 설정하여 해당 페이지를 통해서만 접근가능하게 하면 될까 싶은데 혹시 더 좋은 방법이 있다면 조언 부탁드립니다.
한대승(불의회상) / 2013/08/30 12:00:45 / 추천 0
eungene // 잘 설명 하셨습니다. 보통 그렇게들 많이 구현 한답니다.
변종원(웅파) / 2013/08/30 12:01:07 / 추천 0
비밀번호를 입력받고 post 전송을 해서 비교를 해야하니까

post 전송받는 컨트롤러의 함수에서 전송된 비밀번호가 있는지 검사하여 있으면 통과
그 비밀번호가 세션의 아이디에 해당하는 비밀번호가 맞으면 통과

최종 통과가 되면 말씀하신 대로 private 함수를 호출하시면 됩니다.
컨트롤러 함수내에서 $this->private함수()


최초에 post 전송을 해서 일단 직접 접근은 막을 수 있습니다. csrf까지 적용 한다면 외부사이트에서 폼전송하는 것도
막을 수 있습니다.
eugene / 2013/08/30 14:56:44 / 추천 0
 감사합니다.
말씀하신걸 기초로 세션에 비밀번호가 확인이 되면 특정한 값을 저장하고
다른 리스트를 불러올때 특정한 값이 세션에 존재하면 들어갈수 있도록 구현했습니다.
이렇게 공부하면서 많은걸 배우는 것 같습니다.